2017-05-31 127 views
2

例如图像,我有两个文件:转换具有相同的名称,但不同的扩展

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

正如你所看到的,图像是不同的,尽管它们的名字,它们是相同的。

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

此任务的基本尝试

mogrify -format jpg *.png 

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

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

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

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

那么,你对这个任务有什么建议,以及它是如何完成的?谢谢。

+2

如果你的文件名和'aaa'不一样,你可能只需要编号。 –

+0

你正在使用哪个操作系统? – Andrea

+0

@Andrea Windows 7. – jsv

回答

2

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

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

%p%t属性的含义是:

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

更多细节here

如果这是你的起始场景:

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

最终的情况将是:

aaa.jpg   
aaa.png   
bbb.jpg   
bbb.png 
aaa_0.jpg 
bbb_1.jpg 
+0

谢谢,我应该测试它,但是'convert.exe:missing image name'0 [filename:f] .jpg'@ error/convert.c/ConvertImageCommand/3238.' – jsv

+0

这对我有用:'convert * .png -set filename:f“%t_%p”“%[filename:f] .jpg”'。为什么你发布了稍微不同的版本?(我的意思是,为什么你的命令添加了“零”) – jsv

+0

@jsv是的,你是对的:我做了很多实验,结果粘贴了错误的命令......现在我解开了答案,谢谢你的反馈 – Andrea

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“文件。

+1

对于更多读者:'convert * .png -set filename:f“% t_%e“”%[文件名:f] .jpg“' – jsv

相关问题