Разделите 4 стороны изображения с помощью Imagemagick - PullRequest
0 голосов
/ 23 мая 2018

У меня есть следующее изображение:

test PNG 1366x655 1366x655+0+0 8-bit sRGB 286KB 0.000u 0:00.000

, и мне нужно нарезать его таким образом на границе изображения:

top: 140 px
bottom: 140 px
left: 180 px
right: 60 px

Есть ли однострочная командная строкасделать это с convert?

Ответы [ 4 ]

0 голосов
/ 24 мая 2018

Опираясь на решение Бонзо, вы можете сделать нечто подобное в ImageMagick 6, используя обрезку области просмотра (синтаксис Unix):

top=140
bottom=140
left=180
right=60
convert image.png -set option:distort:viewport "%[fx:w-$left-$right]x%[fx:h-$top-$bottom]+${left}+${top}" -filter point +distort SRT 0 +repage result.png
0 голосов
/ 23 мая 2018

Решение от that other guy очень умное.Стандартным способом было бы использовать -chop.Но это означает 4 вызова, так как в размерах, подлежащих удалению, нет симметрии.Таким образом, в ImageMagick с использованием -chop вы можете выполнить

convert text.png -gravity north -chop 0x180 -gravity east -chop 60x0 -gravity south -chop 0x140 -gravity west -chop 140x0 cropped.png

См. http://www.imagemagick.org/Usage/crop/#chop

См. Также -бритье, когда есть симметрия либо влево / вправо, либо сверху / снизу, либо вокруг.http://www.imagemagick.org/Usage/crop/#shave

0 голосов
/ 23 мая 2018

Другой метод, использующий V7

магический ввод -crop "% [fx: w- (180 + 60)]" x "% [fx: h- (140 + 140)]" +180 + 140 результат

0 голосов
/ 23 мая 2018

Вы можете объединить два -crop с:

                      #left,top      right,bottom
convert test.png -crop +180+140 -crop -60-140 cropped.png
...