Универсальный раствор
Это решение работает с прозрачными и непрозрачными изображениями. Чтобы добавить закругленные углы с радиусом 15 пикселей к original_picture.png
, что является изображением 100x100:
convert -size 100x100 xc:none -draw "roundrectangle 0,0,100,100,15,15" mask.png
convert original_picture.png -matte mask.png \
-compose DstIn -composite picture_with_rounded_corners.png
Это решение было дано PM здесь: https://stackoverflow.com/a/1916256/499917
Элегантное решение, не работает с прозрачными картинками
Это решение работает без какой-либо промежуточной картины. Как мило! Но это нарушит прозрачность вашей оригинальной картинки. Так что используйте только тогда, когда вы уверены, что ваша картинка не прозрачна.
Предположим, вам нужны закругленные углы с радиусом 15 пикселей:
convert original_picture.png \
\( +clone -alpha extract \
-draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0' \
\( +clone -flip \) -compose Multiply -composite \
\( +clone -flop \) -compose Multiply -composite \
\) -alpha off -compose CopyOpacity -composite picture_with_rounded_corners.png
Для удобства вот что вы обычно делаете на Ruby или некоторых других языках:
in_pic = "original_picture.png"
out_pic = "picture_with_rounded_corners.png"
radius = 15
cmd = "convert #{in_pic} \\( +clone -alpha extract " +
"-draw 'fill black polygon 0,0 0,#{radius} #{radius},0 fill white circle #{radius},#{radius} #{radius},0' " +
"\\( +clone -flip \\) -compose Multiply -composite " +
"\\( +clone -flop \\) -compose Multiply -composite " +
"\\) -alpha off -compose CopyOpacity -composite #{out_pic}"
`#{cmd}`
Источник: http://www.imagemagick.org/Usage/thumbnails/#rounded