Скриптинг масштабирования изображений с использованием ImageMagik
Автоматическое масштабирование изображений для статических сайтов
Тема Mainroad в Hugo не изменяет размер изображений автоматически,
просто копирует из статической папки.
Потому нам нужно подготовить скрипт для изменения размера и обрезки изображений до нужного размера.
Когда
У меня несколько источников изображений — смартфон и камера наиболее часто используются.
Они имеют разные разрешения и соотношения сторон.
Поэтому нам нужна последовательность обработки:
- центральная обрезка до соотношения сторон
- изменение размера (уменьшение) до двух разрешений. Качество 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
Результат изображения, который вы видите в начале этого поста, и пропорции исходного изображения выглядели как:
это после простого масштабирования и добавления рамки
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