通过 Linux 命令将 Webp 图像转换为 PNG

OBA*_*AID 11 linux command image webp

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

abc-test.jpg
Run Code Online (Sandbox Code Playgroud)

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

find . -name "*.jpg" -exec dwebp {} -o {}.png \;
Run Code Online (Sandbox Code Playgroud)

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

abc-test.jpg.png
Run Code Online (Sandbox Code Playgroud)

如何在没有.jpg扩展名的情况下保存它

abc-test.png
Run Code Online (Sandbox Code Playgroud)

Gab*_*les 49

如何在 Linux 上将 .webp 图像转换为 .png

在 Linux Ubuntu 20.04 上测试

这个问题是Google 搜索“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
Run Code Online (Sandbox Code Playgroud)

完毕!你现在有out.png.

参考

  1. dwebp我从问题本身了解到


Mar*_*ell 16

如果您有许多要转换/重命名的文件,我建议您使用GNU Parallel,不仅可以通过并行执行它们来更快地转换它们,还可以利用修改文件名的功能。

你想要的命令是:

parallel dwebp {} -o {.}.png ::: *.jpg
Run Code Online (Sandbox Code Playgroud)

其中 的{.}意思是“没有原始扩展名的文件名”

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

find . -name "*.jpg" -print0 | parallel -0 dwebp {} -o {.}.png
Run Code Online (Sandbox Code Playgroud)

如果您想要进度表或“预计到达时间”,您可以在命令之后添加--progress或。--etaparallel

如果你想看看GNU Parallel会运行什么,而不实际运行任何东西,添加--dry-run.

在这个 CPU 变得“更胖”(更多内核)而不是更快的时代,我向您推荐GNU Parallel

  • 非常有趣,谢谢。对于任何不熟悉 webp 的人(就像我一样),您可能首先需要安装以下软件包:`sudo aptitude install parallel webp`。对于具有正确扩展名的 webp 文件,只需执行 `parallel dwebp {} -o {.}.png ::: *.webp`。 (9认同)

tym*_*mik 7

我用短的 oneliner 完成了它,不需要parallel安装在系统中

for x in `ls -1 *.jpg`; do dwebp {} -o ${x%.*}.png ::: $x; done
Run Code Online (Sandbox Code Playgroud)

这适用于当前目录

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

for x in `find . -name "*.jpg"`; do dwebp {} -o ${x%.*}.png ::: $x; done
Run Code Online (Sandbox Code Playgroud)

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