Пришлось мне иметь дело на линуксе с рутинной обработкой большого количества слишком тяжелых для интернета изображений. Я решил воспользоваться для этих целей консольной утилитой ImageMagick, вот, что из этого получилось.
Для начала, как используя ImageMagick можно вывести размеры картинки:
identify -ping -format '%w %h' image.jpg
Все файлы были в разнобойных именах, и с расширениями в разном регистре, что в линуксе критично. Переименовать все файлы IMAGE.JPG в image.jpg можно так:
prename 'y/A-Z/a-z/' *
Этого мне показалось мало, я хотел привести имена файлов к какому-либо общему знаменателю:
for file in *.jpg; do mv -bv "$file" "news-$(date -r "$file" +%Y%m%d-%H%M%S).jpg" ; done
Более оптимальный вариант переименования: (многострочные варианты применять в одну строку!)
declare -A tmu=(); for file in *.jpg; do ((tmu[$(date -r "$file" +%Y%m%d-%H%M%S)]++)); done; declare -A idx=(); for file in *.jpg; do name=$(date -r "$file" +%Y%m%d-%H%M%S); if ((tmu[$name]!=1)); then ((idx[$name]++)); name=$(printf %s-%03d $name ${idx[$name]}); fi; mv -- "$file" "news-$name.jpg"; done
На выходе получаются файлы с датами в именах. Решение подсказали на форуме.
Хотя я замудохался возиться с утилитой в поисках лучшего результата, чем в GwenView на Ubuntu, или в ACDSee 5.0 в Win7, в итоге я ограничился этой конструкцией:
-filter Triangle билинейная интерполяция -define filter:support=2 задать область соседних пикселей -thumbnail 1400 размер картинки -unsharp 0.25x0.08+8.3+0.045 этот фильтр увеличивает чёткость картинки, можно пренебречь.
-dither None Дизеринг (Dithering) – процесс, который смягчает последствия уменьшения количества цветов, добавляя шума в цветовые наборы, чтобы создать иллюзию большего количества цветов. -posterize 136 Постеризация (posterization), когда градиенты заменяются на наборы из чётких цветов. Постеризация уменьшает количество уровней цвета. Сильно грузит процесс, с большими файлами может почти повесить ПК!
-quality 82 настройка качества jpg. В итоге я понизил до 75 -define jpeg:fancy-upsampling=off Эту настройку convert игнорирует, использовать mogrify! On - улучшает качество, но увеличивает вес.
-interlace none Прорисовывать последовательно, не прогрессивно! -colorspace sRGB Даст неправильную цветопередачу если у нас в оригинале CMYK.
Настройки для PNG:
-define png:compression-filter=5 Фильтр сжатия, так сортирует данные, что сжатие становится более эффективным. -define png:compression-level=9 Максимальный уровень сжатия. -define png:compression-strategy=1 Стратегия алгоритма -define png:exclude-chunk=all Удалить мета данные
Конвертировать pdf в jpg используя ghostscript gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -dJPEGQ=91 -r300 -sOutputFile="file-%03d.jpg" document.pdf
Конвертировать используя imagemagick magick -density 300 document.pdf file.jpg
Использовать внутренюю логику для переворачивания изображений на 90°: Где w>h — это ширина изображения больше его высоты. for f in *.jpg; do { magick "$f" -rotate '%[fx:if(w>h,90,0)]' "$f"; } done
for file in *.png; do convert -rotate 90 "$file" rotated_"$file" ; done for file in *.png; do convert -rotate 90 "$file" "$file" ; done
В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи.
Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.  
( Регистрация,   Вход).