Как создать границу изображения?

#imagemagick

#imagemagick

Вопрос:

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

Пример:

  • Граница в 5% на изображении размером 1000×100 пикселей должна дать мне изображение размером 1050×105 пикселей
  • 10%-ная граница изображения размером 500×400 пикселей должна дать мне изображение размером 550×440 пикселей

Итак, для 5% белой границы я получил этот код после множества проб и ошибок. Но это кажется слишком сложным:

 convert infile.png 
    null: 
    ( -clone 0 -resize 105% -fill #fff -colorize 100% ) 
    -swap 0,2 -geometry  0 0 -gravity center -layers composite 
    outfile.png
  

Как я мог бы упростить это? Чего мне не хватает?

ПРИМЕЧАНИЕ: я не хочу указывать статическую ширину границы, поскольку у меня есть несколько входных изображений разных размеров.

Ответ №1:

С помощью ImageMagick вы можете указать размер границы в процентах от ширины и высоты. Запустите подобную команду на изображении размером 500×400, чтобы посмотреть, как это работает…

 convert input.png -border 5x10% result.png
  

Это должно привести к получению выходного изображения с размерами 550×480. Имейте в виду, что указанный вами процент добавляется к каждому краю, поэтому граница в 5% сделает изображение шириной 500 пикселей шириной 550 пикселей.

Чтобы добавить в общей сложности 10% к ширине и высоте, вы должны использовать команду, подобную этой…

 convert input.png -border 5% result.png
  

Комментарии:

1. Затем, чтобы изменить цвет границы, укажите, например -bordercolor '#43ad29' , перед -border директивой.

Ответ №2:

Вы могли бы использовать -extent так:

 convert -size 1000x100 xc:blue -gravity center -background red -extent 105%x105% result.png
  

введите описание изображения здесь

Проверьте

 identify result.png
result.png PNG 1050x105 1050x105 0 0 8-bit sRGB 2c 350B 0.000u 0:00.000
  

Используйте любое из ваших собственных изображений вместо -size 1000x100 xc:blue