Recortar imágenes en un rectángulo redondeado con ImageMagick

Recortar imágenes en un rectángulo redondeado con ImageMagick

¿Cómo puedo usar ImageMagick para convertir una imagen comoeste¿A un PNG con un rectángulo redondeado sobre un fondo transparente?

No todas las imágenes del conjunto tienen bordes limpios, por lo que prefiero trabajar con una máscara estandarizada en lugar de algo como -trim. Quiero hacer el equivalente ImageMagick de CSS border-radius: 4.75% / 3.5%para aplicar una máscara a la tarjeta y guardar el resultado como un PNG que contiene un rectángulo redondeado.

Respuesta1

Unas horas más tarde, investigando la documentación de ImageMagick, encontré el truco.

Primero, haz un rectángulo redondeado que te sirva de máscara.

convert -size 672x936 xc:black -fill white -draw "roundRectangle 0,0,672,936 32,33" generatedcardmask.png

Si le interesan los detalles de cómo funciona esto, lea sobrela estructura general de la línea de comandos de ImageMagick,creando mascarasydibujar formas.

Para los anchos y altos de las esquinas del rectángulo redondeado, los calculé de la siguiente manera:

  • Ancho: 672 px * 4,75 % = 31,92 px (redondeado a 32 px)
  • Alto: 936 px * 3,5 % = 32,76 px (redondeado a 33 px)

Esto genera el siguiente PNG:

imagen generada

Luego puedo tomar la imagen original y usar esta máscara PNG para reemplazar los valores alfa:

convert tsp-156-fortune-thief.jpg generatedcardmask.png -alpha Off -compose CopyOpacity -composite -colorspace RGB test.png

No puedo publicar el resultado aquí por motivos de derechos de autor, pero siéntete libre de probarlo segúnesta imagen.

información relacionada