Изображения

Опубликовано Ksenia-Polo - пн, 05/27/2019 - 12:47

1)Утилита  ImageMagick

Настройки и функций

Примеры с https://habr.com/ru/post/261625/:

mogrify -чтотосделать *.jpg

а)convert input.jpg -resize 300 output.jpg

При этом IM берёт input.jpg и изменяет размер на пикселей в ширину, сохраняя результат в output.jpg. Функция -resize 300 – пример одной из множества функций. У них у всех один формат: -functionName option.

Использовать mogrify можно также, с небольшим дополнением:
mogrify -path output/ -resize 300 *.jpg

Тут IM берёт все файлы JPEG из текущей директории (*.jpg), изменяет их размер до 300 пикселей в ширину и сохраняет их в директории output.

Функции можно комбинировать:
convert input.jpg -resize 300 -quality 75 output.jpg

Это тоже изменяет размер input.jpg до 300 пискелей, но устанавливает качество JPEG в 75 перед сохранением в output.jpg.

б)Протестировав различные изображения разных размеров в форматах JPEG и PNG я пришёл к выводу, что следующие настройки IM создают наименьшие результаты, которые при этом практически неотличимы от выдачи фотошопа:
 

mogrify -path OUTPUT_PATH -filter Triangle -define filter:support=2 -thumbnail OUTPUT_WIDTH -unsharp 0.25x0.25+8+0.065 -dither None -posterize 136 -quality 82 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all -interlace none -colorspace sRGB -strip INPUT_PATH

 

thumbnail удаляет мета данные, всё-таки она удаляет их не все. Есть возможность удалить все, используя -strip и -define png:exclude-chunk=all. На качество это не влияет.

в)Все описанные до этого настройки я рекомендую, если вы не оптимизируете свои картинки. Если их можно оптимизировать, то: небольшие изменения в настройках -unsharp лучше работают (-unsharp 0.25x0.08+8.3+0.045 супротив -unsharp 0.25x0.25+8+0.065 без оптимизации) и не нужно использовать -strip.
 

mogrify -path OUTPUT_PATH -filter Triangle -define filter:support=2 -thumbnail OUTPUT_WIDTH -unsharp 0.25x0.08+8.3+0.045 -dither None -posterize 136 -quality 82 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all -interlace none -colorspace sRGB INPUT_PATH


г)Оптимизаторы image_optimpicopt,  ImageOptim  прогоняют картинки через серию разных шагов. Советуют лучше прогнать файлы через все три в том порядке, в каком они приведены. Правда, после использования image_optim выгода от picopt и ImageOptim становится минимальной. Если у вас нет лишнего времени и процессорной мощности, то использование более одной оптимизации будет чрезмерным.

д)

bash shell


Здесь можно добавить функцию-макрос в файл .bash_aliases (или .bashrc), которая будет заменять мою рекомендуемую команду:
 

smartresize() { mogrify -path $3 -filter Triangle -define filter:support=2 -thumbnail $2 -unsharp 0.25x0.08+8.3+0.045 -dither None -posterize 136 -quality 82 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all -interlace none -colorspace sRGB $1 }



А вызывать её нужно так:
 

smartresize inputfile.png 300 outputdir/

 

 

Пакетно

find . -iname «*jpg» -print0 | xargs -0 -I{} convert <опции> {} /another/dir/{}

https://www.linux.org.ru/forum/general/4224097