3

例如,我有两个文件:

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

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

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

这项任务的基本尝试是

mogrify -format jpg *.png

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

另外,我自己的一些笔记。

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

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

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

4

2 回答 2

3

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

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

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

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

更多细节在这里

如果这是您的起始场景:

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

最后的情况是:

aaa.jpg        
aaa.png        
bbb.jpg        
bbb.png   
aaa_0.jpg
bbb_1.jpg
于 2017-05-31T14:12:45.310 回答
3

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

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

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

如果你这样做,原来的“aaa.png”和“aaa.jpg”将仍然存在,以及新的“aaa_png.jpg”文件。

于 2017-05-31T14:59:26.813 回答