Linux批量转换:使用convert更改jpg的质量但保留其名称

46

如果我使用以下命令将我的图像转换:

convert -quality 80% *.jpg

它能够工作,但是软件会将文件名更改为它选择的第一个文件名。我该如何保留原名称,甚至用低质量图像替换之前的图像。


1
@JimGarrison - 听起来像是一个shell脚本问题。 - ring bearer
1
Mogrify会覆盖原始图像文件,而convert(1)则会写入不同的图像文件。 - Édouard Lopez
3个回答

92

可以尝试使用以下代码:

mogrify -quality 80% *.jpg

17

转换命令帮助:

convert 输入文件 [选项] 输出文件

现在有一个小脚本,可以将当前目录下的所有jpg文件转换为原始图片质量的80%。

for file in *.jpg; do
  convert "$file" -quality 80% "$file"
done;

3
ls 命令的使用是无用的,因为它可以简写为 for f in *jpg。而且,mogrify 命令可以一次处理多个文件。 - Zsolt Botykai
2
@ringbearer 这不是一个很好的做法。需要另一个进程,并且对于文件名中带有空格的文件会失败。除此之外,这是一个很好的答案。 - Sparhawk
1
我移除了子进程(反引号),并添加了引号以防止错误。 - Édouard Lopez

3

This will work for you.

convert -quality 80% '*.jpg' -set filename:original %t %[filename:original].jpg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接