Скриптинг масштабирования изображений с использованием ImageMagik

Автоматическое масштабирование изображений для статических сайтов

Содержимое страницы

Тема Mainroad в Hugo не изменяет размер изображений автоматически,
просто копирует из статической папки.
Потому нам нужно подготовить скрипт для изменения размера и обрезки изображений до нужного размера.

678x495 волшебник

Когда

У меня несколько источников изображений — смартфон и камера наиболее часто используются.
Они имеют разные разрешения и соотношения сторон.

Поэтому нам нужна последовательность обработки:

  • центральная обрезка до соотношения сторон
  • изменение размера (уменьшение) до двух разрешений. Качество jpeg — 80% достаточно хорошее.
    • 235x171
    • 678x495

Где

Предположим, исходные изображения находятся во всех папках ~/tmp/img_src
Нам нужно

  • переместить результат изображений в папки ~/tmp/img_235x171 и ~/tmp/img_678x495
  • назвать изображения как _235x171.jpg и _678x495.jpg

Как

В ubuntu linux будем использовать imagemagick

sudo apt-get install imagemagick

Шаг обрезки:

convert wizard.png -gravity center -extent 11:8 wizarc.jpg
# теперь проверим геометрию
identify wizard.png wizarc.jpg

Шаг изменения размера

convert wizarc.jpg -resize 678x495 -quality 80 -interlace plane wizarc_678x495.jpg
convert wizarc.jpg -resize 235x171 -quality 80 -interlace plane wizarc_235x171.jpg
# теперь проверим геометрию
identify wizarc.jpg wizarc_678x495.jpg wizarc_235x171.jpg

80 — это качество jpeg, а plane означает прогрессивный jpeg.
Это поможет загружать изображения быстрее на медленных соединениях,
не только потому, что сначала будет загружена миниатюра, но и потому, что сам файл меньше. Хотя бы в случае с волшебником.

С рамками

convert wizarc.jpg -resize 676x493 -quality 80 -interlace plane -border 1x1 wizarc_678x495.jpg
convert wizarc.jpg -resize 233x169 -quality 80 -interlace plane -border 1x1 wizarc_235x171.jpg
# теперь проверим геометрию
identify wizarc.jpg wizarc_678x495.jpg wizarc_235x171.jpg

Результат изображения, который вы видите в начале этого поста, и пропорции исходного изображения выглядели как:

20% волшебника

это после простого масштабирования и добавления рамки

convert wizard.png -resize 20% -quality 85 -interlace plane -border 2x2 wizard20.jpg

Другие варианты

nautilus-image-converter

nautilus-image-converter — это расширение для nautilus для массового изменения размера или поворота изображений. Чтобы установить nautilus-image-converter во всех поддерживаемых версиях Ubuntu откройте терминал и введите:

sudo apt-get install nautilus-image-converter

Он добавляет два пункта контекстного меню в nautilus, поэтому вы можете щелкнуть правой кнопкой мыши и выбрать “Изменить размер изображения”. (Другой пункт — “Повернуть изображение”).

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

Вам нужно перезапустить ваш nautilus, чтобы увидеть новые контекстные меню, запустите

nautilus -q

и затем щелкните значок домашней папки, чтобы перезагрузить nautilus с новым плагином.

mogrify

Команда mogrify перезаписывает исходные файлы измененными изображениями:

mogrify -resize 50% *.png # сохранить соотношение сторон изображения mogrify -resize 320x240 *.png # сохранить соотношение сторон изображения mogrify -resize 320x240! *.png # не сохранять соотношение сторон изображения mogrify -resize x240 *.png # не сохранять соотношение сторон изображения mogrify -resize 320x *.png # не сохранять соотношение сторон изображения

Другие полезные инструменты

Получить метаданные изображения — например, разрешение, глубину битов и т.д. — часть пакета imagemagick.

identify image.jpg 

выдаст что-то вроде

image.jpg JPEG 720x482 720x482+0+0 8-bit DirectClass 100KB 0.000u 0:00.009

Конвертировать изображения в pdf

convert $(ls -v *.jpg) foobar.pdf
convert $(ls -v *.png) foobar.pdf

Полезные ссылки