转换名称相同但扩展名不同的图像

Convert images which have the same names but different extensions

比如我有两个文件:

aaa.jpg        (with cat)
aaa.png        (with dog)

如您所见,图像是不同的,尽管它们的名称相同。

我想将这两个图像转换为一种格式。

这个任务的基本尝试是

mogrify -format jpg *.png

但它不起作用,原因很明显(一个文件夹不能包含具有相同名称和扩展名的多个文件)。

还有一些自己的笔记。

  1. 请注意,这只是示例。在现实生活中,大约有 100-200 张图像。

  2. 在我看来,似乎至少有两种方法可以解决此问题:向文件名添加时间戳 添加随机文本。我认为随机文本会更好,因为时间戳有时可能相等(如果处理速度非常快)。

那么,您对这项任务有什么建议,如何完成?谢谢

您可以使用 convert 代替 mogrify 将原始文件名修改为 -set filename:f,例如添加包含计数器的后缀:

convert *.png -set filename:f "%t_%p" "%[filename:f].jpg"

其中%p%t属性的含义是:

  • %p 当前图片列表中的图片索引
  • %t 没有目录或扩展名(后缀)的文件名

更多详情here

如果这是您的起始场景:

aaa.jpg        
aaa.png        
bbb.jpg        
bbb.png  

最终情况是:

aaa.jpg        
aaa.png        
bbb.jpg        
bbb.png   
aaa_0.jpg
bbb_1.jpg

在类似的情况下,我添加了文本(不是随机的),所以文件将是 aaa_png.png 和 aaa_jpg.jpg,因此在转换之后你将得到 aaa_png.jpg 和 [=21] =] 这应该可以帮助您跟踪事情并避免遇到问题。

正如@jsv 指出的那样,您可以一步完成:

convert *.png -set filename:f "%t_%e" "%[filename:f].jpg

如果您这样做,原始的 "aaa.png" 和 "aaa.jpg" 以及新的 "aaa_png.jpg" 文件将仍然存在。