Наложение имени файла изображения с использованием ImageMagick (или аналогичного) - PullRequest
12 голосов
/ 05 ноября 2010

Я знаю, что команда ImageMagick annotate может наложить некоторый текст поверх изображения, но может ли он использовать имя файла изображения в качестве этого текста? Я бы предположил, но не могу найти прямой документации, подтверждающей это.

Без сомнения, некоторая комбинация параметров может управлять этим, или есть лучший способ сделать это в скрипте?

Ответы [ 4 ]

18 голосов
/ 03 октября 2012

Это очень старая запись, но я нахожу ее каждый раз, когда ищу эту тему, и она не работает (по крайней мере для меня) Вот кое-что, что работает для меня:

convert input.jpg -gravity South -annotate 0 '%f' output.jpg

Надеюсь, это кому-нибудь поможет ...

13 голосов
/ 06 октября 2012

Эрик Л. ответил правильно - +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

Пример иллюстрации для одного оригиналаи соответствующие выходные данные приведены ниже:

original image image with caption!

Вот команда, которая использует -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

original image resulting image

1 голос
/ 23 июня 2017

Вы также можете использовать mogrify для одновременного добавления текста в группу изображений.

mogrify -gravity South -annotate 0 '%f' -pointsize 24 -fill white  *.png

Это перезапишет существующие изображения, поэтому перед выполнением этого убедитесь, что у вас есть резервная копия.

0 голосов
/ 04 марта 2019

Опираясь на решение Стива Четти, похоже, вы можете установить размер текста и цвет аннотации, используя соответственно -pointsize и -fill.

Вот пример:

convert input.jpg -gravity south -pointsize 24 -fill yellow -annotate 0 '%f' output.jpg

Очевидно, что вы можете изменить размер текста с 24 пунктов на что-то еще, а также цвет с «желтого» на другой цвет, в соответствии с вашими предпочтениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...