2017-05-31 126 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

相關問題