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

时间:2017-05-31 12:14:24

标签: imagemagick imagemagick-convert mogrify

例如,我有两个文件:

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

正如您所看到的,尽管名称相同,但图像却不同。

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

此任务的基本尝试是

mogrify -format jpg *.png

但由于显而易见的原因(一个文件夹不能包含多个具有相同名称和扩展名的文件),它无法正常工作。

另外,我自己也有一些笔记。

  1. 请注意,这只是一个例子。在现实生活中,它将是大约100-200张图像。

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

  3. 那么,你对这项任务有什么建议,以及如何做到这一点?感谢。

2 个答案:

答案 0 :(得分:3)

在类似的情况下,我添加文字(不是随机的),所以文件将是aaa_png.png和aaa_jpg.jpg,因此在转换后你有aaa_png.jpg和aaa_jpg.jpg这应该可以帮助你跟踪事情并且对你遇到的问题免疫。

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

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

如果你这样做的话,原来的&#34; aaa.png&#34;和&#34; aaa.jpg&#34;将继续存在,以及新的&#34; aaa_png.jpg&#34;文件。

答案 1 :(得分:2)

您可以使用mogrify使用convert修改原始文件名,而不是-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