Полезности → Конвертация картинок
Подкинули мне на днях халтурку. Надо сделать каталог программ на сайт. Работа несложная, но трудоемкая. Особенно в части оформления.
Каждому внесенному в каталог приложению должно соответствовать две одинаковые картинки в формате JPG – маленькая (большая сторона – 125) и большая (большая сторона – 640). Делать их надо из скриншота, загруженного с официального сайта.
Технология, стало быть, такая. Сперва скачал картинку в формате PNG, потом сделал из нее JPG, потом сделал маленькую копию, потом большую, потом удалил «исходник», чтобы места на диске не занимал. В-общем, рутинная работа для которой нужна программа convert из пакета ImageMagick.
В системе Mandriva пакет устанавливается командой
Теперь считаем. Если картинок много, то получается совсем невесело. Надо это дело как-то автоматизировать.
Предлагаю два способа.
Первый:
Его недостаток в том, что обрабатываются файлы только из текущего каталога. Если надо охватить и вложенные директории, то ничего не получится.
Второй:
Этот метод уже универсальный.
PS. Часто начинающие пользователи испытывают страх перед скриптами, ошибочно полагая, что это обязательно должны быть какие-то многоэтажные конструкции. Это не всегда так — даже две-три команды, объединенные в одну, могут оказаться эффективны. Тем более, что их написание занимает буквально пару минут.
Каждому внесенному в каталог приложению должно соответствовать две одинаковые картинки в формате 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. Часто начинающие пользователи испытывают страх перед скриптами, ошибочно полагая, что это обязательно должны быть какие-то многоэтажные конструкции. Это не всегда так — даже две-три команды, объединенные в одну, могут оказаться эффективны. Тем более, что их написание занимает буквально пару минут.
- +3
- SergeyGolubev
- 16 июля 2011, 12:01
чтобы этого избежать, нужно поставить экранированный символ "!" в конце размера, примерно так:
или тут: