the ethers
the ethers

Reputation: 37

Image Magick - Cropping picture into circle

I have 100+ png files all 500x500, I'm trying to crop a circle in the centre of the image 400x400 and save it into a separate png, keeping the 500x500. example below

Does anyone know how to use image magick to achieve this and run through each file in the folder? - thanks

Source

enter image description here

Desired output

enter image description here

Upvotes: 1

Views: 1649

Answers (3)

fmw42
fmw42

Reputation: 53182

You can process every (png) image in a folder using mogrify. Assuming Imagemagick 6. Just change directories to the folder and add the path to your mask.png image, which should not be in that directory.

mogrify -alpha set -draw "image copy_opacity 0,0 0,0 'mask.png'" *.png

Upvotes: 0

focog77269
focog77269

Reputation: 154

You can find answers in How can I combine these commands to achieve circular crop in ImageMagick?

magick convert input.jpg -gravity center ( -size 480x480 xc:black -fill white -draw "circle 240 240 240 0" -alpha copy ) -compose copyopacity -composite output.png
magick input.jpg ( +clone -threshold 101% -fill white -draw "circle %[fx:int(w/2)],%[fx:int(h/2)] %[fx:int(w/2)],%[fx:int(h)]" ) -channel-fx "| gray=>alpha" output.png
magick input.jpg ( +clone -threshold 101% -fill white -draw "roundRectangle 0,0 %[fx:int(w)],%[fx:int(h)] 50,50" ) -channel-fx "| gray=>alpha" output.png
magick input.jpg ( +clone -threshold 101% -fill white -draw "roundRectangle %[fx:int((w-h)/2)],0 %[fx:int((h+w)/2)],%[fx:int(h)] 50,50" ) -channel-fx "| gray=>alpha" -trim output.png

Upvotes: 0

xenoid
xenoid

Reputation: 8994

Make a 500x500 image with a 400px opaque circle in it (mask.png) (this is of course going to be same image for all your input):

enter image description here

Then from a source:

enter image description here

convert source.png mask.png -compose copy-opacity -composite result.png

yields:

enter image description here

Upvotes: 1

Related Questions