Imagemagick - Как создать аннотацию, которая бы подходила по размеру к любому изображению? - PullRequest
0 голосов
/ 30 октября 2019

Мне нужно написать скрипт bash, который бы комментировал данное изображение с помощью imagemagick. Проблема заключается в том, что изображение может быть любого размера, и его аннотация должна выглядеть почти одинаково на любом изображении.

Результат вывода должен выглядеть так на любом изображении:

image

Итак, есть несколько моментов, которые я хотел бы выяснить:

  1. Как нарисовать прозрачный прямоугольник с текстом, который будет регулировать его размер в зависимости от размера изображения?
  2. Как разместить этот прямоугольник внизу изображения, как в примере?

1 Ответ

3 голосов
/ 30 октября 2019

Используя ImageMagick версии 6 или 7, вы можете сделать метку размером, подходящим для любого входного изображения, с полупрозрачным фоном, и скомпоновать ее в нижней части входного изображения, чтобы получить результат, который вы описываете. Вот команда с IM 6, которая делает это ...

convert input.png -set option:size %[w]x \
   -fill white -background "#00000080" \
   \( label:"This is my text." \
      -virtual-pixel background -distort SRT "0.8 0" \
      -virtual-pixel none -distort SRT "0.8 0" \) \
   -gravity south -composite result.png

, которая использует ширину входного изображения "% [w]", чтобы установить ширину метки. Он устанавливает цвет текста на белый, а фон - полупрозрачный черный, "# 00000080".

В скобках он создает метку. Он использует «искажать SRT», чтобы немного уменьшить метку, чтобы вытянуть ее с краев. Затем он немного уменьшает масштаб метки, чтобы добавить вокруг нее немного прозрачного пространства.

После того, как метка создана, она устанавливает гравитацию на «юг» и накладывает метку на входное изображение. Он заканчивается записью выходного файла.

Используя IM 7, вам нужно изменить «конвертировать» в «магию». Для Windows измените обратную косую черту в продолжениях строки «\» на «^» и избавьтесь от обратных косых черт, которые выходят за скобки.

Отредактировано, чтобы добавить: Обычно вы используете «-size WxH» перед созданием«label:», чтобы ограничить его в определенных измерениях. Вместо этого я использовал «-set option: size», потому что он позволяет использовать процентные экранирования, такие как «% [w]», с IM 6. Таким образом, размеры меток относительно любой ширины входного изображения.

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