Иногда возникает такая необходимость — сделать что-то с целой кучей изображений, чаще всего — сжать, чтобы не занимали много места.
Есть много разных редакторов — Photoshop, Lightroom и им подобных. Кроме того, появилось уже очень много всяких онлайн сервисов, которые позволяют сжимать и оптимизировать картинки.
Если этих картинок с десяток, то можно обойтись каким-нибудь сервисом. А вот если их больше, на помощь приходят консольные утилиты. Одни из таких ImageMagick, jpegoptim, optipng
ImageMagick представляет из себя кроссплатформенный набор утилит, который содержит очень много функций для работы с изображениями — конвертирование из одного формата в другой, различные трансформации (ресайз, обрезка, вращение, зеркальное отражение), применение разных эффектов, вроде размытия… и очень много других.
Jpegoptim и optipng позволяют сжать изображение без потери качества, а для jpegoptim также возможно сжатие с потерями.
Примеры с ImageMagick
Поиск и ресайз всех изображений до 500px
Для одного файла:
1 |
convert -resize ‘500>’ input.jpg output.jpg |
Для нескольких изображений можно использовать такую магию:
1 |
find -regex “.*[jpg|png]” -exec convert {} -resize ‘500>’ {} \; |
Разместить маленькое изображение внутри белого квадрата, заданного размера
1 |
convert input.jpg -gravity center -background white -extent 500x500 output.jpg |
Создание пиктограмм 80×80
1 2 |
<span class="keyword">for</span> file <span class="keyword">in</span> *.jpg; <span class="keyword">do</span> convert <span class="variable">$file</span> -resize 80x80 -background white -gravity center -extent 80x80 80x80-<span class="variable">$file</span>; <span class="keyword">done</span> |
Примеры с jpegoptim и optipng.
1 |
jpegoptim input.jpg |
В этом режиме удаляется вся мета-информация, кроме Exif и комментариев. По-умолчанию используется алгоритм сжатия без потери качества
Сжатие с потерями, удаление всей мета-информации:
1 |
jpegoptim input.jpg -m50 --strip-all |
Для оптимизирования всех png изображений можно использовать следующую команду
1 |
find -name *.png -exec -optipng -o3 <span class="string">'{}'</span> \ |
где -o может быть от -o0 до -o7
Чем выше этот параметр, тем больше фильтров будет использовано для оптимизации. Размер будет меньше, но и обрабатываться каждое изображение будет дольше.
В принципе, это весь необходимый минимум чтобы оптимизировать тонну картинок для быстрой загрузки сайтов и экономии места на хостингах.
Прочее
В данном разделе будут размещаться небольшие сниппеты, которые определенным образом относятся к теме статьи.
Скачивание картинок списком, удаление белого пространства вокруг них
Чтобы скачать картинки списком, удобнее всего использовать wget.
Переходим в нужный каталог, где у нас подготовлен файл с адресами url картинок и запускаем команду:
1 |
wget -i list.txt |
Для того, чтобы обрезать одну картинку нужно запустить команду:
1 |
convert input.jpg -trim output.jpg |
Чтобы обрезать несколько, то можно воспользоваться find:
1 |
find ./ -name <span class="string">"*.jpg"</span> -exec convert {} -trim out/{} \; |
где out — папка, куда будут сохраняться обработанные картинки
Источник: http://diggitize.me/imageoptimize/
https://corp2.info/razrabotka-i-sozdanie-sajtov-internet-magazinov-veb-proektov-kiev-1038.html
Leave a Reply