Вопрос или проблема
Я хочу добавить подпись к существующему изображению (сохранив как новое изображение), и кажется, что ImageMagick может это сделать, но ни один из примеров, которые я видел, не объясняет, как сделать это так, как я хочу, а именно добавить это как новую часть изображения внизу, оставляя всё существующее изображение видимым. Подпись должна быть черным текстом на белом фоне, а белый фон должен заполнять всю ширину изображения, независимо от того, какой эта ширина.
В идеале подпись должна определяться из подмножества имени файла – например, имя файла, заканчивающееся на “a.jpg”, должно быть подписано как “Место A”, имя файла, заканчивающееся на “cclue.jpg”, как “Подсказка для места C”, “key.png” как “ключ к изображениям” и т.д. Я думаю, что было бы идеально, если бы эти подписи были определены в текстовом файле, который я мог бы обновлять. Однако этот второй параграф не является обязательным.
Ответ или решение
Чтобы добавить подпись к существующему изображению с использованием командной строки, вы можете воспользоваться мощными инструментами, предоставляемыми ImageMagick. В этом руководстве мы рассмотрим, как добавить текстовое описание (подпись) в нижней части изображения, сохраняющее при этом первоначальный вид изображения.
Установка ImageMagick
Если у вас еще не установлен ImageMagick, вы можете сделать это с помощью следующих команд в зависимости от вашей операционной системы:
-
Для Ubuntu/Debian:
sudo apt-get install imagemagick
-
Для macOS с использованием Homebrew:
brew install imagemagick
-
Для Windows:
Загрузите и установите ImageMagick с официального сайта.
Шаги для добавления подписи
-
Создание текстового файла с подписями: В качестве первого шага создайте текстовый файл, который будет содержать соответствие между именами файлов и подписями. Назовем его
captions.txt
. Пример содержания файла:a.jpg: Location A cclue.jpg: Location C clue key.png: key to images
-
Скрипт для автоматизации процесса: Далее создайте скрипт на Bash, который будет считывать ваши изображения и добавлять подписи на основе текстового файла. Создайте файл
add_caption.sh
с содержимым:#!/bin/bash # Задаем файл с подписями CAPTION_FILE="captions.txt" # Обрабатываем каждое изображение в текущей директории for img in *.jpg *.png; do # Читаем подпись из файла caption=$(grep "^$img:" $CAPTION_FILE | cut -d':' -f2-) # Проверяем, есть ли подпись для данного изображения if [ -n "$caption" ]; then # Получаем размеры изображения width=$(identify -format "%w" "$img") height=$(identify -format "%h" "$img") # Создаем белый фон для подписи caption_height=50 caption_bg="caption_bg.png" convert -size ${width}x${caption_height} xc:white $caption_bg # Добавляем подпись convert "$img" "$caption_bg" -gravity South -pointsize 20 -fill black -annotate +0+5 "$caption" "output_${img}" # Удаляем временный файл с фоном rm $caption_bg fi done
-
Запуск скрипта: Сделайте ваш скрипт исполняемым и запустите его:
chmod +x add_caption.sh ./add_caption.sh
Объяснение работы скрипта
- Чтение подписями из текстового файла: Скрипт читает имя файла и соответствующую подпись из файла
captions.txt
. - Определение размеров изображения: Используется команда
identify
для получения ширины изображения, что позволяет создать фон для подписи, который будет соответствовать ширине оригинального изображения. - Создание фона подписи: Используя команду
convert
, создается белый фон с заданной высотой для подписи. - Добавление текста: Подпись добавляется в нижней части изображения с учетом ширины оригинала, и создается новый файл, который сохраняется с префиксом
output_
.
Заключение
Этот подход предоставляет гибкое решение для добавления подписям к изображениям с использованием ImageMagick и Bash. Вы можете легко обновлять файл с подписями captions.txt
по мере необходимости, что делает процесс простой и эффективной частью вашего рабочего процесса. Если у вас возникли дополнительные вопросы или вы хотите доработать данный скрипт, не стесняйтесь обращаться за поддержкой.