UlfR
UlfR

Reputation: 4395

How to create an image border?

I want to create something like a border around an image with ImageMagick. I want the border to be related to the original size of the image.

Ex:

So for a 5% white border I got this code after lots of trial and error. But it seems way over complicated:

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

How could I simplify this? What am I missing?

NOTE: I do not want to specify static width of the border since I have multiple input images of multiple sizes.

Upvotes: 2

Views: 958

Answers (2)

GeeMack
GeeMack

Reputation: 5395

With ImageMagick you can specify the size of a border as a percent of the width and height. Run a command like this on a 500x400 image to see how it works...

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

That should produce an output image with the dimensions 550x480. Keep in mind the percentage you specify is added to each edge, so a 5% border will make a 500 pixel wide image 550 pixels wide.

To add a total of 10% to both the width and height you would use a command like this...

convert input.png -border 5% result.png

Upvotes: 5

Mark Setchell
Mark Setchell

Reputation: 208052

You could use -extent like this:

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

enter image description here

Check

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

Use any of your own images in place of -size 1000x100 xc:blue

Upvotes: 2

Related Questions