#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