批处理.png到.webp [关闭]

Posted

技术标签:

【中文标题】批处理.png到.webp [关闭]【英文标题】:Batch process .png to .webp [closed] 【发布时间】:2014-12-21 07:28:02 【问题描述】:

我有大约 100 张 .png 图片,所有图片都必须转换为 .webp(Google 的图片格式)。我正在使用 Google 的 CLI 工具。知道如何批量处理它们。

【问题讨论】:

使用find ... -exec 只为下一代:for F in *.jpg; do cwebp $F -o `basename $F%.jpg`.webp; done 【参考方案1】:

您可以借助一个简单的bash 脚本来完成。

导航到您的图像所在的目录并执行以下操作:

$ for file in *
> do
> cwebp -q 80 "$file" -o "$file%.png.webp"
> done

您可以根据需要更改输出文件名。但应该以.webp 扩展名结尾。

【讨论】:

我可以在哪里写这个脚本? @InfinitePrime,我刚刚对您的回答做了一个小小的修改。在 cwebp 参数中添加了引号(因此如果输入文件名中有空格,您的代码不会中断) 不幸的是,这会导致文件名为 file.png.webp,至少在我在 Mingw 上的使用中是这样。 在windows上你可以下载cwebp二进制文件并使用powershell运行它,看到这个答案***.com/a/49602450/7448956 @AdrianSmith 您可以使用 for file in *.png ; do cwebp -q 50 "$file" -o "$file%.png.webp"; done 从输出文件扩展名中删除 png。【参考方案2】:

如果你有这么多,你需要使用 GNU Parallel,否则你将在那里一整年!

请先将一些文件复制到一个备用的临时目录中,然后在此尝试以确保它在 100,000 张图像上使用它之前符合您的要求:

parallel -eta cwebp  -o ..webp ::: *.png

这将启动并继续运行,与您拥有的 CPU 内核一样多的进程,每个进程都执行cwebp。处理的文件将是当前目录下的所有PNG文件。

如果命令行太长,你可以像这样使用find 传递文件列表:

find . -name "*.png" | parallel -eta cwebp  -o ..webp

【讨论】:

很好地使用并行。但是你错过了点!它应该是 ..webp @iNFINITEi 很好发现 - 谢谢。我相信我现在已经更正了 - 但如果你知道不同,请说出来! @MarkSetchell 你能解释一下这个点的作用吗?我的命令find JPEG/ -iname "*.jpeg" -print -exec cwebp -jpeg_like -af -o Webp/.webp \; 在没有点的情况下工作(Ubuntu)。先感谢您。谷歌搜索没有帮助。附言点指的是..webp中的第一个点 如何执行此命令并在另一个文件夹中输出.webp @Hosamalzagh 你可以使用mkdir other/folder 然后parallel -eta cwebp -o other/folder/ ::: *.png

以上是关于批处理.png到.webp [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将webp转换为png

iOS图片处理

批处理文件 - 名称[关闭]

安卓-APP瘦身优化

如何使用干预图像laravel将webp图像转换为jpeg或png

使用 MapboxStatic api 时,标记叠加层必须是 png、jpg 或 webp