суббота, 2 февраля 2013 г.

Делим изображение на части.

Сегодня просматривая ленту мне попалась статья где астрономы НАСА сняли Солнце используя разные параметрические фильтры и в результаты сложили на одно большое изображение. Вот Ты его можешь здесь посмотреть
Фотографии в других размерностях
4096х4096
2048х2048

Красиво да!. Первое что мне пришло в мою шальную голову это сделать кисточки для GIMP из кусочков ну или на худой конец текстуры! Они такие фантастические. Вот тут вспомнился и наш GIMP и его инструмент - "гильотина", но размер исходного изображения не позволял реально разрезать эту картинку ибо время требовалось не мерено, а так же и ресурсов . И вот здесь как раз пришел на помощь ImageMagick и прямая команда из терминала с определенным ключом. Конечно чтобы получить наибольшее разрешение в кусочков была скачена на диск фотка размером 4096х4096 и ее мы записали на диск под именем sun.jpg, а дальше в терминале ввели такую команду
convert sun.jpg -crop 683x512  \
          +repage  +adjoin  sun_%02d.png
и получили 48 кусочков размером 683х512px всего за секунд 5 не более, а может и меньше .
Фактически мы выполнили типичное действие с фотографией которое зачастую занимает минуты долгих преобразований в визуальных редакторов типа фотошоп.

Давайте теперь рассмотри по порядку каждый аргумент нашего действа. В данном случае мы воспользовались командой пакета convert c аргументами. Основной аргумент это конечно ссылка на наше исходное изображение в виде имени файла, и также шаблон имени для выводных файлов, которых будет ровно 48 штук, ибо столько делений на самой фотке, которые будем делить, итак считаем
4096 / 6 = 683 - по ширине
 4096 / 8 = 512 - по высоте
этот параметр входит как аргумент к ключу -crop 683x512, а чтобы все полченые кусочки имели нулевые координаты в верхнем левом углу встпвляем аргумент +repage. И наконец мы указываем команде, что все полученные кусочки должны располагаться в отдельных файлах, в соответствии с нашим заданным шаблоном, мы вставляем аргумент +adjoin.
Чтобы закончить - мы определяем будущий шаблон выдачи как sun_%02d.png. Этот вид формата используется в языке Си и в других языках и сообщает команде, что нужно сформировать имена для каждого файла в виде двух цифр с ведущим нулем, которые будут отличаться друг от друга ровно на 1 и начинаться с 0.
Вот и все - получившийся результат перед вами!