通过 Linux 命令将 WEBP 图片转换为 PNG

Convert WEBP images to PNG by Linux command

我有很多 webp format images in a folder but with .jpg 扩展名

abc-test.jpg

这是一张 webp 格式的图片。我希望它以相同名称的 .png 格式转换,因为我使用了这个命令并且它有效

find . -name "*.jpg" -exec dwebp {} -o {}.png \;

它将所有 webp 图像转换为 .png,但问题是它正在像这样保存图像:

abc-test.jpg.png

但我的要求是保存时不带 .jpg 扩展名,例如

abc-test.png

将 sed 与 mv 一起使用是一件好事。它与模式匹配并替换为更新的模式。

for file in *.jpg;
do
   mv "$file" "`echo $file | sed s/.jpg/.png/`"
done

如果你想保留旧文件而不是 mv 你可以使用 cp

如果您有很多 convert/rename,我建议您使用 GNU Parallel 并且不仅可以通过并行处理它们来更快地转换它们,而且还可以利用它们修改文件名的能力。

你要的命令是:

parallel dwebp {} -o {.}.png ::: *.jpg

其中 {.} 表示 "the filename without the original extension".

如果你也想递归到子目录,你可以使用:

find . -name "*.jpg" -print0 | parallel -0 dwebp {} -o {.}.png

如果你想要一个进度表,或者一个"estimated time of arrival",你可以在[=15=之后添加--progress--eta ]命令。

如果您想查看 GNU Parallel 会 运行,实际上 运行 没有任何内容,请添加 --dry-run.

在这个 CPU 越来越 "fatter"(更多内核)而不是更快的时代,我向您推荐 GNU Parallel .

我用不需要 parallel 在系统中安装的短 oneliner 做到了

for x in `ls -1 *.jpg`; do dwebp {} -o ${x%.*}.png ::: $x; done

这适用于当前目录

我会尝试修改@mark-setchell 递归解决方案,使其看起来像这样:

for x in `find . -name "*.jpg"`; do dwebp {} -o ${x%.*}.png ::: $x; done

${x%.*} 部分是这里需要解释的部分 - 它告诉 bash 从 x 变量中获取 . 和点后的所有内容。 由于我没有检查这里的正则表达式是懒惰的还是贪婪的,所以对于带有更多点的名称很容易出现错误行为 - 因此可以进一步调整答案。

如果问题出在 linux 图片查看器上 - 这就是转换的原因 - 那么我发现:here

“在 Ubuntu 和其他 Linux 中添加对 GNOME Image Viewer 的 WebP 支持 默认情况下,照片查看器不支持 WebP 图片文件。但是,您可以通过安装 webp-pixbuf-loader 库来添加 WebP 支持。它不仅允许您在 GNOME 图像查看器中打开 WebP 文件,它还在文件资源管理器中显示 WebP 文件的缩略图。

在基于 Ubuntu 的 Linux 发行版中,您可以使用 PPA 安装此库。一一使用以下命令:"

sudo add-apt-repository ppa:krifa75/eog-ordissimo
sudo apt update
sudo apt install webp-pixbuf-loader

如何在 Linux

上将 .webp 图像转换为 .png

测试于 Linux Ubuntu 20.04

这个问题是 Google search of "linux convert .webp image to png" 的热门问题。因此,对于任何在这里绊倒并只想得到简单答案的人来说,这里是:

# 1. Install the `webp` tool
sudo apt update
sudo apt install webp

# 2. Use it: convert in.webp to out.png
dwebp in.webp -o out.png

完成!您现在有 out.png.

参考资料

  1. 我从
  2. 那里了解到 dwebp