
Как использовать ImageMagick для преобразования изображения типаэтотв PNG с закругленным прямоугольником на прозрачном фоне?
Не все изображения в наборе имеют четкие границы, поэтому я предпочитаю работать со стандартизированной маской, а не с чем-то вроде -trim
. Я хочу сделать эквивалент CSS в ImageMagick, border-radius: 4.75% / 3.5%
чтобы применить маску к карточке и сохранить результат в формате PNG, содержащем скругленный прямоугольник.
решение1
Спустя несколько часов изучения документации ImageMagick я нашел этот трюк.
Сначала создайте скругленный прямоугольник, который будет служить маской.
convert -size 672x936 xc:black -fill white -draw "roundRectangle 0,0,672,936 32,33" generatedcardmask.png
Если вас интересуют подробности того, как это работает, прочтитеобщая структура командной строки ImageMagick,создание масокирисование фигур.
Ширину и высоту углов скругленного прямоугольника я рассчитал следующим образом:
- Ширина: 672px * 4,75% = 31,92px (округлено до 32px)
- Высота: 936 пикселей * 3,5% = 32,76 пикселей (округлено до 33 пикселей)
Это создаст следующий PNG:
Затем я могу взять исходное изображение и использовать эту маску PNG для замены альфа-значений:
convert tsp-156-fortune-thief.jpg generatedcardmask.png -alpha Off -compose CopyOpacity -composite -colorspace RGB test.png
Я не могу опубликовать здесь результат из-за авторских прав, но вы можете свободно попробовать его на основеэто изображение.