субота, 8 вересня 2007 р.

Використання ImageMagick для пакетної обробки зображень

А давайте придумаємо собі ще одну задачку і на її прикладі я покажу як працює ще одна цікава програма - ImageMagick. Мабуть більшість з вас і не підозрювала, що редагувати графічні зображення можна і у текстовому режимі? Насправді можна.

Отже, зустрічаємо ImageMagick
Офіційний сайт: http://www.imagemagick.org/

Особливості встановлення:
sudo apt-get install imagemagick

ImageMagick - вражаюче потужна система призначена для редагування графічних зображень, особливо її плюси проявляються при пакетній обробці зображень. Для чого це все потрібно? Уявіть, що вам потрібно обробити не одне зображення, а наприклад 100. Ну там, зкоректувати кольори, підправити гаму, додати контурної різкості, змінити розміри та формат зображень, а на додачу ще й додати у нижній правий куток кожного з них маленьке зображення зі своїм логотипом (або логотипом свого сайту куди ви зібралися ці зображення викласти). Будете як дятел тикати мишкою по кнопкам для всіх 100 зображень? А може таки варто нарешті усвідомити, що комп'ютер придумали для того щоб полегшувати життя, а не його ускладнювати? Тут і приходить на виручку ImageMagick.

Отже, уявімо, що ми створюємо сайт присвячений Сарі Брайтман і хочемо викласти туди колекцію фотографій. У мене є наприклад з десяток фотографій розмірами 1024х768 які цілком згодяться для даного прикладу. Зменшимо розміри кожної фотографії до 640х480 і додамо у правий нижній куток невеличку емблемку, відповідний файл розмірами 100х50 пікселів попередньо створимо у GIMP. А потім ще зробимо копії цих фотографій але вже у чорно-білому варіанті (ну наприклад ми захочемо щоб фотографії були присутні на сторінці у чорно-білому варіанті, а при наведенні мишкою перетворювалися на кольорові). Ну то приступимо.

Ось наш початковий набір зображень:


Тепер створимо у GIMP емблему і запишемо її у файл logo.gif з прозорим фоном і помістимо у ту ж папку:


А тепер створимо у цій же папці скрипт im.sh з таким вмістом:

#!/bin/sh
for fname in *.jpg; do
mogrify -resize 640 $fname
composite -compose atop -gravity SouthEast logo.gif $fname $fname
convert $fname -colorspace GRAY bw-$fname
done


скажемо системі, що цей файл є програмою:
chmod +x im.sh
і тепер вже його можна запускати
./im.sh

Тобто за допомогою оператора for ми обходимо всі файли *.jpg змінюючи їх розміри (-resize), потім додаючи логотип, а потім для кожного з файлів робимо його монохромну копію. У результаті вміст папки буде мати такий вигляд:


Ось так, і якщо відкрити будь-який із файлів, то у правому нижньому куті можна буде побачити логотип:


Тепер якщо вам колись потрібно буде обробити за один прийом десь з сотню фотографій я маю надію нікому не прийде у голову обробляти кожен файл вручну поодинці?

З ImageMagick також дуже просто конвертувати графічні формати з одного в інший. Наприклад у вас є папка у якій знаходиться близько двох сотень зображень у форматі .jpg, а вам їх потрібно перевести у .png, тоді просто набираємо у терміналі команду:
for fname in *.jpg; do convert $fname ${fname%.jpg}.png; done

І все, у папці тепер з'являться відповідні файли .png. Звісно ж з допомогою додаткових опцій до convert ви заодно зможете зробити і ще щось, наприклад змінити розміри чи зкоректувати кольори. Ось так.мультивалютный вклад,

Немає коментарів:

Дописати коментар