Делим изображение на части
Сообщений 1 страница 5 из 5
Поделиться204.08.18 16:35
Первое что мне пришло в мою шальную голову это сделать кисточки для GIMP из кусочков ну или на худой конец текстуры! Они такие фантастические. Вот тут вспомнился и наш GIMP и его инструмент - "гильотина", но размер исходного изображения не позволял реально разрезать эту картинку ибо время требовалось не мерено, а так же и ресурсов . И вот здесь как раз пришел на помощь ImageMagick и прямая команда из терминала с определенным ключом. Конечно чтобы получить наибольшее разрешение в кусочков была скачена на диск фотка размером 4096х4096 и ее мы записали на диск под именем sun.jpg, а дальше в терминале ввели такую команду
convert sun.jpg -crop 683x512 \ +repage +adjoin sun_%02d.png
и получили 48 кусочков размером 683х512px всего за секунд 5 не более, а может и меньше. Фактически мы выполнили типичное действие с фотографией которое зачастую занимает минуты долгих преобразований в визуальных редакторов типа фотошоп.
Поделиться304.08.18 16:36
Давайте теперь рассмотри по порядку каждый аргумент нашего действа. В данном случае мы воспользовались командой пакета convert c аргументами. Основной аргумент это конечно ссылка на наше исходное изображение в виде имени файла, и также шаблон имени для выводных файлов, которых будет ровно 48 штук, ибо столько делений на самой фотке, которые будем делить, итак считаем
4096 / 6 = 683 - по ширине 4096 / 8 = 512 - по высоте
этот параметр входит как аргумент к ключу этот параметр входит как аргумент к ключу -crop 683x512, а чтобы все полченые кусочки имели нулевые координаты в верхнем левом углу встпвляем аргумент +repage. И наконец мы указываем команде, что все полученные кусочки должны располагаться в отдельных файлах, в соответствии с нашим заданным шаблоном, мы вставляем аргумент +adjoin.
Чтобы закончить - мы определяем будущий шаблон выдачи как sun_%02d.png. Этот вид формата используется в языке Си и в других языках и сообщает команде, что нужно сформировать имена для каждого файла в виде двух цифр с ведущим нулем, которые будут отличаться друг от друга ровно на 1 и начинаться с 0.