как выложить одно клонированное изображение - PullRequest
0 голосов
/ 30 ноября 2018

Я хотел бы создать изображение с одним изображением в ширину и высоту с помощью graphicsmagick.

Я попробовал эту команду, которая работает:

gm montage -geometry 2x2 mypic.png mypic.png mypic.png out.png

Однако я хотел быПовторите это изображение много раз (более 100x100).

Можно ли это сделать, не повторяя mypic.png 10000 раз? ?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Вы не говорите, насколько велики изображения, которые вы планируете сделать, но если они очень большие, вы можете столкнуться с несколькими проблемами.

Во-первых, JPEG ограничен 65536 x 65536пикселей, поэтому вам понадобится что-то вроде bigtiff или PNG, если вам нужно больше.

Во-вторых, вам может понадобиться огромное количество памяти для создания больших изображений.Например, на этом ноутбуке я могу запустить:

$ time convert -size 50000x50000 tile:k2.jpg result.jpg
real    6m11.366s
user    1m19.671s
sys 0m20.836s

, чтобы сделать JPG размером 50k x 50k пикселей примерно за 6 м.

convert соберет все изображение, прежде чем оно начнет писатьрезультат.Если у вас нет загрузок ОЗУ, вместо этого будет использоваться огромный временный файл.Если во время обработки я смотрю /tmp, я вижу:

$ ls -l /tmp
total 1199684
-rw------- 1 john john 20000000000 Dec  1 15:56 magick-9559WtN2jwPlvrMm

Временный файл 20 ГБ.Это 50000 * 50000 * 4 * 2, поэтому он создает 16-разрядное четырехканальное временное изображение.* * * * * * * * * * * * * * * * * * * * * * * *

Вы можете рассмотреть другие системы - * 101 8 * libvips - библиотека обработки потоковых изображений, поэтому она может выполнять команды.как это без необходимости делать полные промежуточные изображения.Я вижу:

$ time vips replicate k2.jpg result.jpg 35 25
real    0m13.592s
user    0m16.383s
sys 0m1.426s
$ vipsheader result.jpg 
result.jpg: 50750x51200 uchar, 3 bands, srgb, jpegload

Это копирует k2.jpg 35 раз по горизонтали и 25 раз по вертикали, чтобы сделать изображение немного больше, чем 50k x 50k.Он не создает временный файл и заканчивается примерно через 15 секунд.У него не будет проблем с выходом очень, очень больших выходных изображений - я регулярно обрабатываю изображения размером 300 000 x 300 000 пикселей (хотя, очевидно, не в формате jpg).

0 голосов
/ 30 ноября 2018

Я не знаю GraphicsMagick.Но я предполагаю, что это похоже на ImageMagick, так как это был дополнительный от ImageMagick.В ImageMagick вы можете легко это сделать двумя способами:

Ввод:

enter image description here

montage lena.jpg -duplicate 24 -tile 5x5 -geometry +0+0 result.jpg


enter image description here

convert -size 1280x1280 tile:lena.jpg result2.jpg


enter image description here

См. Различные способы сделать плитку в https://imagemagick.org/Usage/canvas/#tile

Я не уверен, есть ли в GraphicsMagick параметр -duplicate, поскольку он был представлен в ImageMagick 6.6.8-10 3/27/2011 спустя много лет после их разделения.

ImageMagick имеет гораздо больше возможностей, чем GraphicsMagick, но можетнемного медленнее.Вы можете рассмотреть возможность использования ImageMagick, а не GraphicMagick

...