Как конвертировать картинки

Материал из Rosalab Wiki
Перейти к: навигация, поиск


Подкинули мне на днях халтурку. Надо сделать каталог программ на сайт. Работа несложная, но трудоемкая. Особенно в части оформления. Каждому внесенному в каталог приложению должно соответствовать две одинаковые картинки в формате JPG – маленькая (большая сторона – 125) и большая (большая сторона – 640). Делать их надо из скриншота, загруженного с официального сайта.

Технология, стало быть, такая. Сперва скачал картинку в формате PNG, потом сделал из нее JPG, потом сделал маленькую копию, потом большую, потом удалил «исходник», чтобы места на диске не занимал. В-общем, рутинная работа для которой нужна программа convert из пакета ImageMagick.

В системе Mandriva пакет устанавливается командой

urpmi imagemagick


Теперь считаем. Если картинок много, то получается совсем невесело. Надо это дело как-то автоматизировать. Предлагаю два способа.

Первый:

   #!/bin/bash
   for img in *.png; do
       convert -quality 60 -resize 640x480 "$img" "$img.MAIN.jpg"
       convert -quality 60 -resize 125x100 "$img" "$img.PRE.jpg"
       rm "$img"
   done


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

Второй:

   #!/bin/bash
   find -name "*.png" | xargs -I {} -t convert -quality 60 -resize 640x640 {} "{}.MAIN.jpg"
   find -name "*.png" | xargs -I {} -t convert -quality 60 -resize 125x100 {} "{}.PRE.jpg"
   find -name "*.png" | xargs -I {} -t rm {}


Этот метод уже универсальный.

PS. Часто начинающие пользователи испытывают страх перед скриптами, ошибочно полагая, что это обязательно должны быть какие-то многоэтажные конструкции. Это не всегда так — даже две-три команды, объединенные в одну, могут оказаться эффективны. Тем более, что их написание занимает буквально пару минут.

Источник"