Страница 1 из 1

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

Добавлено: 27 июл 2013, 03:06
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?

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

Добавлено: 27 июл 2013, 10:42
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