我知道ImageMagick的annotate
命令可以將某些文本疊加到圖像上,但它是否可以使用圖像的文件名作爲此文本?我會這樣認爲,但似乎無法找到證實這一點的直接文件。使用ImageMagick(或類似的)覆蓋圖像的文件名
毫無疑問,某些參數組合可以管理這個問題,還是有更好的方法在腳本中做到這一點?
我知道ImageMagick的annotate
命令可以將某些文本疊加到圖像上,但它是否可以使用圖像的文件名作爲此文本?我會這樣認爲,但似乎無法找到證實這一點的直接文件。使用ImageMagick(或類似的)覆蓋圖像的文件名
毫無疑問,某些參數組合可以管理這個問題,還是有更好的方法在腳本中做到這一點?
埃裏克L.的答案是正確的 - +1從我吧! - 但-annotate
不會讓您對文本的外觀有太大的控制。
如果你尋找漂亮,那麼寧可去使用-composite
。您可以使用IM命令先構建覆蓋圖像(使用半透明背景),然後覆蓋原始圖像。
下面是如何使用-composite
而不是-annotate
使用腳本處理方法來處理當前目錄中每個PNG文件的示例。這一個甚至自動適應的字體大小,並將其裝配到可用的「寬×90%」 - 它是一個bash腳本(參見爲Win等效註釋):
for img in *.png; do
width=$(identify -format %W ${img})
width=$((${width} * 9/10))
convert \
-background '#0008' \
-gravity center \
-fill white \
-size ${width}x100 \
caption:"${img}" \
"${img}" \
+swap \
-gravity south \
-composite \
"with-caption-${img}"
done
示例圖示爲一個原始和各自的輸出如下:
!
下面是一個使用-annotate
,試圖建立一些東西超出了預設的參數的命令:
for img in so#12231624-right.png; do
convert \
"${img}" \
-fill red \
-undercolor '#0008' \
-pointsize 24 \
-gravity south \
-annotate +0+5 "${img}" \
"with-annotate-${img}"
done
這是一個非常古老的條目,但我每次搜索該主題時都會發現它,但它不起作用(至少對我而言)。這裏的東西,對我的作品:
convert input.jpg -gravity South -annotate 0 '%f' output.jpg
希望這可以幫助別人......
快速且容易理解,但許多圖像無法讀取。 – erik 2013-05-17 11:44:03
如何在這裏指定文件名的特定字符?假設我想要添加文件名的前3個字符。我將如何做os'%f'{0:2}? – 2014-11-17 20:12:57
您還可以使用mogrify
在文本添加一些圖片,一旦。
mogrify -gravity South -annotate 0 '%f' -pointsize 24 -fill white *.png
這會覆蓋現有圖像,因此請確保在執行此操作前已備份。
這是bash命令行嗎? – Serguzest 2013-03-19 22:19:24
這是給Bash的,是的。在Windows/DOS上,語法將類似於(* .png)中的%i轉換....'。這裏沒有最後的'* done *','for'部分後面沒有分號。 – 2013-03-19 23:19:35
謝謝,我實際上解決了它因爲Git而存在於我的窗口中的bash命令行。 – Serguzest 2013-03-20 17:13:05