Наложение изображения именем используя ImageMagick (или аналогичных)
Я знаю, что ImageMagick в annotate
команда может наложить некоторый текст на изображение, но может ли она использовать имя файла изображения в качестве этого текста? Я бы предположил, что так, но, похоже, не могу найти прямую документацию, которая подтверждает это.
несомненно, некоторая комбинация параметров может управлять этим, или есть лучший способ сделать это в скрипте?
3 ответов
ответ Эрика л. правильный -- +1 от меня за это! -- но!--2--> не дает вам больше контроля над внешним видом текста.
если вы ищете привлекательность, то лучше пойти на что-то, что использует -composite
. С помощью команды IM можно сначала создать изображение наложения (которое использует полупрозрачный фон), а затем наложить его на исходное изображение.
вот пример того, как это сделать с -composite
вместо -annotate
, используя сценарий, который обрабатывает каждый PNG-файл в текущем каталоге. Этот даже автоматически адаптирует размер шрифта и помещает его в доступный "width * 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
надеюсь, это кому-то поможет...
вы также можете использовать mogrify
чтобы добавить текст в кучу изображений сразу.
mogrify -gravity South -annotate 0 '%f' -pointsize 24 -fill white *.png
это перезапишет существующие изображения, поэтому перед выполнением этого убедитесь, что у вас есть резервная копия.