Как расширить размер изображения в ImageMagick

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Как расширить размер изображения в ImageMagick

Сообщение Denis Rykov »

У меня есть изображение, которое я хочу разбить на тайлы размера 256x256, используя ImageMagick следующим образом:

Код: Выделить всё

convert -crop 256x256 +repage input.jpg tiles_%d.jpg
но так как размеры исходного растра не кратны 256, то часть тайлов получаются не квадратными. Можно как то изменить размер исходного изображения таким образом, чтобы его размеры были пропорциональны 256, залив при этом области увеличения определенным цветом?


UPD: Используя Python, сделал так:

Код: Выделить всё

from PIL import Image

src_path = 'DSCN9461.JPG'
tile_size = 256

src_img = Image.open(src_path)

# get size of original image
src_width, src_height = src_img.size

# calculate size of target image
target_width = src_width + (tile_size - src_width % tile_size)
target_height = src_height + (tile_size - src_height % tile_size)

# create transparent background
target_img = Image.new('RGBA', (target_width, target_height))

# combine original image and background
target_img.paste(src_img, (0, 0))
target_img.save('output.PNG', 'PNG')
но все равно интересно, как это можно сделать в ImageMagick?
Spatial is now, more than ever, just another column- The Geometry Column.
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Как расширить размер изображения в ImageMagick

Сообщение ericsson »

Размер картинки управляется параметрами geometry и extent, положение картинки внутри пустой геометрии - параметром gravity.
http://www.imagemagick.org/Usage/montage/#geometry_size
http://www.imagemagick.org/Usage/crop/#extent
Если нарезка происходит слева направо и сверзу вниз, то добавлять пустые пиксели нужно справа внизу, т.е. gravity всегда будет принимать значение NorthWest.
Второй вариант - порезать все как есть, затем вывести через identify ( http://www.imagemagick.org/script/escape.php ) ширину и высоту для всех получившихся тайлов в csv-файл, потом прогнать по нему простую проверку (в том же batch-скрипте) что %w<256 или %h<256 и если это истинно, то применить -extent 256 -gravity NorthWest
Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя