Как обрезать изображение в несколько прямоугольных сеток с помощью imagemagick - PullRequest
2 голосов
/ 02 июня 2019

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

Я думаю, для этого можно использовать imagemagick.

Ответы [ 2 ]

3 голосов
/ 02 июня 2019

Я понятия не имею, что такое сетка Instagram или какие ограничения по размеру она может иметь, но если у вас есть изображение, подобное этому:

enter image description here

Вы можете разделить его на сетку, 3 плитки в ширину и 2 в высоту, вот так:

magick input.jpg -crop 3x2@ tile-%d.png

А вот 6 плиток:

-rw-r--r--@ 1 mark  staff   62199  2 Jun 16:26 tile-0.png
-rw-r--r--@ 1 mark  staff   75180  2 Jun 16:26 tile-1.png
-rw-r--r--@ 1 mark  staff   69615  2 Jun 16:26 tile-2.png
-rw-r--r--@ 1 mark  staff  108443  2 Jun 16:26 tile-3.png
-rw-r--r--@ 1 mark  staff  121714  2 Jun 16:26 tile-4.png
-rw-r--r--@ 1 mark  staff  121384  2 Jun 16:26 tile-5.png

enter image description here

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

magick input.jpg -crop 5x4@ tile-%04d.png

enter image description here

-rw-r--r--  1 mark  staff   5976  2 Jun 16:33 tile-0000.png
-rw-r--r--  1 mark  staff  15138  2 Jun 16:33 tile-0001.png
-rw-r--r--  1 mark  staff  17625  2 Jun 16:33 tile-0002.png
-rw-r--r--  1 mark  staff  15640  2 Jun 16:33 tile-0003.png
-rw-r--r--  1 mark  staff  12695  2 Jun 16:33 tile-0004.png
-rw-r--r--  1 mark  staff  30138  2 Jun 16:33 tile-0005.png
-rw-r--r--  1 mark  staff  32371  2 Jun 16:33 tile-0006.png
-rw-r--r--  1 mark  staff  30280  2 Jun 16:33 tile-0007.png
-rw-r--r--  1 mark  staff  33469  2 Jun 16:33 tile-0008.png
-rw-r--r--  1 mark  staff  29507  2 Jun 16:33 tile-0009.png
-rw-r--r--  1 mark  staff  34697  2 Jun 16:33 tile-0010.png
-rw-r--r--  1 mark  staff  36322  2 Jun 16:33 tile-0011.png
-rw-r--r--  1 mark  staff  36616  2 Jun 16:33 tile-0012.png
-rw-r--r--  1 mark  staff  40337  2 Jun 16:33 tile-0013.png
-rw-r--r--  1 mark  staff  37466  2 Jun 16:33 tile-0014.png
-rw-r--r--  1 mark  staff  30444  2 Jun 16:33 tile-0015.png
-rw-r--r--  1 mark  staff  36170  2 Jun 16:33 tile-0016.png
-rw-r--r--  1 mark  staff  39400  2 Jun 16:33 tile-0017.png
-rw-r--r--  1 mark  staff  38850  2 Jun 16:33 tile-0018.png
-rw-r--r--  1 mark  staff  36439  2 Jun 16:33 tile-0019.png
2 голосов
/ 02 июня 2019

Чтобы превратить любое изображение в сетку квадратов с помощью ImageMagick, вам нужно заранее определить количество единиц.Такая команда будет начинаться с обрезки входного изображения до точного квадрата, а затем обрезки этого квадрата до сетки 3х3 из меньших квадратов ...

convert in.png -gravity center -extent 1:1 -crop 3x3@ out%02d.png

Это "-extent" обрезает ввод до наибольшеговозможно квадратное, поэтому, когда оно будет разрезано на сетку 3х3, готовые изображения также будут квадратными.Чтобы обрезать изображение в сетке 3x4, вы будете использовать команду, подобную этой ...

convert in.png -gravity center -extent 3:4 -crop 3x4@ out%02d.png

В этом примере «-extent» обрезает входное изображение до точного соотношения сторон 3: 4.поэтому, когда вы обрежете его на 3 части по 4 части, все они будут квадратными.

В обоих примерах будут получены выходные изображения с последовательно пронумерованными именами файлов, такими как "out01.png", "out02.png" и т. д.

Если вы хотите нумеровать выходные изображения в том порядке, в котором вам нужно их загрузить, вы, вероятно, захотите эту нумерацию в обратном порядке.Вы можете добавить «-reverse -scene 1» к команде непосредственно перед записью выходных данных, чтобы получить имена файлов этих обрезанных квадратов, пронумерованных в порядке, который вы будете использовать для загрузки.

Если вы используете IM7в этих командах измените «convert» на «magick».

Примечание. Синтаксис, позволяющий «-extent» использовать соотношение сторон, например «3: 4», доступен только с начала 2018 года.в более старых версиях ImageMagick может потребоваться вручную рассчитать эту первую обрезку, чтобы получить входное изображение с правильным соотношением сторон (... или использовать выражения FX для задания области просмотра и "-distort" для имитации обрезки).

...