我正在尝试使用 imagemagick 命令 mogrify 转换(压缩)一堆 JPEG 图像,并将原始文件保存在同一目录中。我在终端窗口中输入:mogrify -quality 25% *.JPEG con-%002d.JPEG 然后我收到错误:mogrify:无法打开图像“con-%002d.JPEG”:没有这样的文件或目录@error/blob.c/OpenBlob/2712。我该如何解决这个错误?我运行了:identify -verbose * | grep Format 并且结果适用于所有文件:格式:JPEG(联合图像专家组 JFIF 格式)exif:thumbnail:JPEGInterchangeFormat:10718 exif:thumbnail:JPEGInterchangeFormatLength:8223
我的系统是 Xubuntu 16.04,很感谢你们的帮助,谢谢 Vladi。
答案1
根据手册页mogrify
,它不采用输出选项,除非格式发生变化(直到文件扩展名都使用相同的名称),否则它只会覆盖输入文件。
尝试使用这个convert
。
#!/bin/bash
n=1
for i in *.JPEG; do
convert "$i" -format jpg -quality '25%' $(printf con-%03d.JPEG $n)
n=$((n+1))
done
JPEG 与 jpg
我对同一张图片进行了两次变形
$ mogrify -format JPEG b.jpg
$ mogrify -format jpg b.jpg
然后
$ diff -u <(identify -verbose b.jpg ) <(identify -verbose b.JPEG)
--- /dev/fd/63 2018-09-29 14:42:27.506462707 -0400
+++ /dev/fd/62 2018-09-29 14:42:27.510462929 -0400
@@ -1 +1 @@
-Image: b.jpg
+Image: b.JPEG
@@ -71,2 +71,2 @@
- date:create: 2018-09-29T14:37:11-04:00
- date:modify: 2018-09-29T14:37:11-04:00
+ date:create: 2018-09-29T14:37:03-04:00
+ date:modify: 2018-09-29T14:37:03-04:00
@@ -77 +77 @@
- filename: b.jpg
+ filename: b.JPEG
答案2
使用-write
mogrify -set filename:name '%t_q%Q' -quality 30 -write '%[filename:name].jpg' *.jpg
上述命令将转换后的图像写入新名称:converting姓名.jpg到名称_q30.jpg,名称1.jpg到名称1_q30.jpg. 保证您的旧文件安全。
对于他人百分比逃逸元数据选项,请参阅文档