Linux пакетное изменение размера изображения

Обновлено: 04.07.2024

Как и в прошлой статье, задача будет посталена так: необходимо оптимизировать все изображения относительно текущей папки, включая изображения во всех вложенных вне зависимости от уровня (вложенности). Чтобы это реализовать нам опять понадобится команда поиска файлов "find".

Все действия в статье будем проводить на дистрибутиве Linux, с установленным пакетом ImageMagic и Jpegoptim. Этот пакет можно установить как на сервере, так и на персональном компьютере.

Изменение геометрического размера JPG

Для начала изменим размер тех картинок, которые больше, чем 1000 на 1000 пикселей. Эту величину необходимо выбирать из вёрстки сайта. Например, если картинка может отображается на сайте в области 2000 на 2000 пикселей, то необходимо указать именно этот размер. Но отображать большие картинки в маленьких областях не имеет смысла - это будет пустая трата места и скорости загрузки.

Для уменьшения размера нам понадобится перейти в корневую папку, относительно которой во всех вложенных будет происходить конвертация изображений. И выполнить такую команду:

find . -name "*.jpg" -exec echo "'<>'" \; | xargs identify -format '%w %h %i\n' | awk '$1 > 1000 || $2 > 1000 ' | tr '\n' '\0' | xargs -0 mogrify -resize 1000x1000

  • find . -name "*.jpg" -exec echo "'<>'" \; - находит все файлы с расширением ".jpg" (пути к ним содержатся в <> ). Ключ exec вызывает команду "echo", которая распечатывает (и передаёт по конвейеру) путь к каждому найденному файлу.
  • | xargs identify -format '%w %h %i\n' - конвейер "|" (вертикальная черта) и xargs передаёт вывод предыдущей команды в утилиту identify, которая анализирует изображение и печатает ширину "%w", высоту "%h" и путь к файлу "%i"
  • | awk '$1 > 1000 || $2 > 1000 ' - сравнивает ширину и высоту со значением 1500. Если какое-либо значение превышает это, то удаляет размеры из строки, оставляя путь к файлу и печатает его
  • | tr '\n' '\0' - обрезает нулевой бит и перенос строки, подготавливая для передачи на вход в mogrify
  • | xargs -0 mogrify -resize 1000x1000 - изменяет размер изображения

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

Изменение качества JPG

После завершения изменения размеров остаётся только изменить качество изображений. Для этого используем пакет jpegoptim. Выполним команду, которая опять начнётся с поиска файлов через "find", чтобы произвести изменения со всеми изображениям и во всех вложенных папках:

find . -name "*.jpg" -exec jpegoptim <> --strip-all --all-progressive --max=70 \;

Очень долгое время я пользовался программой RIOT, но на тот период я плотно сидел на операционных системах семейства Windows. И вот на протяжении уже нескольких лет я использую ОС Ubuntu. Долгое время я работал с RIOT установленным через wine. С сегодняшнего дня я решил использовать меньше костылей и заняться вплотную изучением команд терминала Linux. На сайте программы RIOT есть ссылка на скачивание плагина для популярного редактора Gimp. Но запускать софт такого размера ради сжатия одного изображения мне крайне не хочется.

ImageMagick или как сжимать изображения в ОС Linux

Поэтому сегодня речь пойдет об утилите ImageMagick.

ImageMagick это огромный бесплатный многоплатформенный комплекс утилит, который поддерживается многими языками программирования, и существует как отдельный комплекс. Думаю тем, кто как-то связан с веб-разработкой, с ImageMagick знаком не понаслышке.
Конечно может, кому то покажется совершенно неудобным работать с изображениям с помощью консольной утилиты. Но я в любом случае советую попробовать.

Установка ImageMagick

На данный момент моей операционной системой является Linux Ubuntu 14.04, поэтому и примеры буду приводить именно из нее. Итак перейдем к установке ImageMagick в Linux Ubuntu 14.04:
Перед тем как устанавливать этот пакет, проверьте, возможно он у вас уже есть, и какая у него версия:

dpkg -s imagemagick

Это команда проверит какая версия пакета ImageMagick установлена в вашей системе.
У меня этот пакет оказался установленным. Для тех у кого этого пакета нет, выполните следующую команду(собственно сама установка):

sudo apt-get install imagemagick

Команды для работы ImageMagick в терминале

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

convert <input_image> <commands> <out_image>

Что бы просто конвертировать изображение одного формата в другой формат, нужно сделать следующее:

convert img.jpg img.jpg

-quality

Уровень сжатия изображения можно указать с помощью параметра -quality:

convert img.jpg -quality 75 img1.jpg

Вы можете указать здесь в качестве значения цифры от 1 до 100. По умолчанию используется значение 92. Я обычно для блога сжимаю с параметром 75.

-resize

Для того что бы изменить размер изображения нужно воспользоваться параметром -resize:

convert img.jpg -resize 100×150 img1.jpg

convert img.jpg -resize 100×150 img1.jpg

Сжатие изображения по ширине до 100px, при этом высота будет сжата пропорционально

convert img.jpg -resize 100 img1.jpg

Аналогичное предыдущему, только здесь изображение сжимается по высоте до 150px

convert img.jpg -resize ×150 img1.jpg

convert img.jpg -resize 100×150! img1.jpg

convert img.jpg -resize 20% img1.jpg

-rotate

Для того что бы повернуть изображение существует параметр -rotate, где значение указывается в градусах:

convert img.jpg -rotate 20 img1.jpg

Группировка команд

convert img.jpg -resize 100×400 -rotate 120 -quality 75 img.jpg

identify <commands> <image>

Сокращенная информация о изображении:

А та же команда с параметром -verbose выведет полную информацию о изображении.

identify -verbose img.jpg

Пакетная обработка изображений с помощью ImageMagick

Я сам ей практически и не пользуюсь. Мне чаще все таки нужно работать с отдельными изображениями. Следующая команда обработает все изображения с разрешением .jpg повернет их на 180 градусов и запишет в файлы с новым именем rotated-предыдущее имя файла.

for file in *.jpg; do convert $file -rotate 180 rotated-$file; done

Часто для фотогалерей необходимо изменять размеры исходных изображений до одинаковых по высоте и/или ширине. Например, используя галерею на основе Foldergallery, желательно привести изображения к одному размеру по высоте, чтобы при просмотре их крупным планом при переходе к следующему изображению не было "прыжков" изображений.

Если изображений очень много, то лучше автоматизировать процесс изменения размеров картинок. В GNU/Linux есть все необходимые инструменты для пакетной обработки изображений как в командной строке (используя пакет ImageMagick), так и через графический интерфейс (используя графический редактор GIMP).

Допустим, в каталоге /home/user/picture находятся исходные фотографии, выполненные как в альбомной, так и в ландшафтной ориентации, и нам необходимо привести все изображения к одной высоте в 600 пикселей, сохраняя при этом пропорции фотографий, и с качеством изображения формата JPEG 65 единиц.

Переходим в командной строке в каталог с изображениями:

и выполняем команду:

for i in `ls`; do convert -resize 'x600' -quality 65 $i x600q60_$i; done

В результате выполнения этой команды все изображения, находящиеся в текущем каталоге, будут конвертированы в картинки с высотой в 600 пикселей (это задает часть команды convert -resize 'x600', если необходимо задать не высоту, а ширину в 600 пикселей, то команда будет такой: convert -resize '600'), и все обработанные изображения будут сохранены с префиксом x600q60_ (например, исходный файл DSC02939.JPG станет x600q60_DSC02939.JPG). Пропорции изображений при этом будут сохранены.

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

Для этого в программе GIMP необходимо выбрать пункт меню Фильтры >> Batch >> Batch process.

Далее все уже интуитивно понятно, необходимые установки для нашего примера смотрите в галерее скриншотов (обработанных, кстати, командным процессором GIMP-а)

  Пакетное изменение размеров изображений

Еще один способ для массового изменения размеров изображений через графический интерфейс состоит в использовании пакета nautilus-image-converter, который встраивается в оболочку Nautilus

Favorite

Добавить в избранное

Главное меню » Операционная система Ubuntu » Групповое изменение размеров изображений с помощью командной строки в Ubuntu и ImageMagick

Групповое изменение размера изображений с помощью командной строки Linux и ImageMagick

Б ольшие изображения означает большой размер страницы, что означает медленный WordPress и время загрузки страницы для пользователей. Наиболее распространенной причиной является размер изображения или отсутствие сжатия. Если вы никогда не имели каких-либо ограничения размера изображения или автоматическое изменение размеров на вашем сайте, это может быть очень удобно для пакетного изменения размеров этих изображений в Linux.

Это руководство покажет вам, как изменить размер группы файлов с расширением JPG и PNG с помощью ImageMagick на Ubuntu или Debian.

Групповое изменение размера изображений с помощью командной строки Linux и ImageMagick

Во-первых, мы должны установить ImageMagick из хранилища на Debian или Ubuntu.

лучше использовать identify, чтобы получить высоту

Вы увидите, разрешение: ширину, а потом высоту.

Вы можете изменить размер изображения, если оно большое, и можете указать размеры. Это позволит автоматически сохранить соотношение сторон изображения.

Проверьте измененный размер изображения

Теперь мы можем перейти к пакетному изменению размеров

Пакетное изменение размера изображений с Linux и Imagemagick

Создайте следующий скрипт

Вставить ниже сценарий.

FOLDER это абсолютный путь к вашей папке изображений

Он будет перезаписывать ваши оригинальные изображения, убедитесь, что вы имеете резервную копию перед запуском!

Нажмите Ctrl + X, Y и Enter, чтобы сохранить и выйти.

Проверьте размер папки

Проверьте итоговый размер

Команда screen обеспечит работу пакетного преобразования, даже если ваш SSH сеанс завершается.

Создайте новый экран сеанса, нажмите пробел или введите screen

Отделить экран с помощью Ctrl + A, а затем нажмите D (снять).

Вы можете использовать команду top и смотреть процессы jpegoptim одновременно.

Проверьте размер папки снова

Вы должны увидеть улучшение

Убедитесь в том, чтобы сжать ваши изображения с Lossless или сжатия с потерями (текущее руководство).

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактировать изображения в Ubuntu

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

Ubuntu уже давно предлагает возможность чтобы иметь возможность выполнить эту задачу с помощью простой команды и с последующей экономией времени. Вам просто нужно знать точную команду, отметить разрешение и выбрать объемные фотографии, размер которых мы хотим изменить.

ImageMagick позволит нам изменять размер фотографий в нашей Ubuntu

Чтобы выполнить эту задачу, Пользователю Ubuntu требуется ImageMagick, программное обеспечение, которое обычно устанавливается в Ubuntu, но было бы неплохо проверить, есть ли оно у нас или нет, перед его установкой. Как только эта проверка будет завершена, мы переходим к терминалу и в терминале заходим в папку, где находятся изображения, размер которых мы хотим изменить. Мы также можем перейти в папку графически и открыть терминал в папке. Как только мы это сделаем, мы должны написать следующую команду для изменения размера фотографий:

Таким образом, размер всех фотографий в папке будет увеличен до 800 пикселей. Фигура может быть изменена по своему усмотрению, но остальная часть команды остается. Если мы хотим изменять размер фотографий до определенного размера, то напишем следующее:

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

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Убунлог » Ubuntu » Как массово изменить размер фотографий в Ubuntu

Читайте также: