Добавьте подпись к изображению, используя командную строку.

Вопрос или проблема

Я хочу добавить подпись к существующему изображению (сохранив как новое изображение), и кажется, что 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 с официального сайта.

Шаги для добавления подписи

  1. Создание текстового файла с подписями: В качестве первого шага создайте текстовый файл, который будет содержать соответствие между именами файлов и подписями. Назовем его captions.txt. Пример содержания файла:

    a.jpg: Location A
    cclue.jpg: Location C clue
    key.png: key to images
  2. Скрипт для автоматизации процесса: Далее создайте скрипт на 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
  3. Запуск скрипта: Сделайте ваш скрипт исполняемым и запустите его:

    chmod +x add_caption.sh
    ./add_caption.sh

Объяснение работы скрипта

  • Чтение подписями из текстового файла: Скрипт читает имя файла и соответствующую подпись из файла captions.txt.
  • Определение размеров изображения: Используется команда identify для получения ширины изображения, что позволяет создать фон для подписи, который будет соответствовать ширине оригинального изображения.
  • Создание фона подписи: Используя команду convert, создается белый фон с заданной высотой для подписи.
  • Добавление текста: Подпись добавляется в нижней части изображения с учетом ширины оригинала, и создается новый файл, который сохраняется с префиксом output_.

Заключение

Этот подход предоставляет гибкое решение для добавления подписям к изображениям с использованием ImageMagick и Bash. Вы можете легко обновлять файл с подписями captions.txt по мере необходимости, что делает процесс простой и эффективной частью вашего рабочего процесса. Если у вас возникли дополнительные вопросы или вы хотите доработать данный скрипт, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...