Обрезка изображений до скругленного прямоугольника с помощью ImageMagick

Обрезка изображений до скругленного прямоугольника с помощью ImageMagick

Как использовать 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

Я не могу опубликовать здесь результат из-за авторских прав, но вы можете свободно попробовать его на основеэто изображение.

Связанный контент