es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar un borde a un archivo PNG transparente utilizando ImageMagick, manteniendo la transparencia.

Estoy tratando de agregar un borde rojo de 10px a una imagen PNG transparente utilizando ImageMagick, y al mismo tiempo preservar cualquier transparencia existente en la imagen. Aquí está mi imagen de origen:

Si descargas y ves esa imagen con un visualizador de imágenes, verás que tiene un fondo transparente.

Según todo lo que he leído, el siguiente comando de Imagemagick debería agregar un borde rojo de 10px a la imagen:

convert input.png -bordercolor red -border 10 output.png

En realidad, agrega el borde rojo a la imagen, ya que las dimensiones de salida son 20px más grandes en ambas direcciones. Desafortunadamente, también cambia el color de fondo de la imagen a rojo. Aquí está el archivo de salida:

No quiero que el área transparente cambie a rojo. Solo quiero agregar un borde rojo alrededor de la imagen transparente.

He intentado usar tanto la versión de ImageMagick 6.9.10-23 (Ubuntu) como la versión 7.1.0 (a través de la API de CloudConvert), con el mismo resultado. He pasado horas(!) tratando de resolver esto.

¿Qué estoy haciendo mal?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar un borde rojo de 10 px a una imagen PNG transparente utilizando ImageMagick y preservar cualquier transparencia existente dentro de la imagen, puedes usar el siguiente comando:

    convert input.png -bordercolor red -border 10x10 -channel RGBA -alpha on -background none -flatten output.png

    Explicación del comando:

    • input.png: Este es el nombre de tu archivo de entrada.
    • -bordercolor red: Esto establece el color del borde en rojo.
    • -border 10x10: Esto agrega un borde de 10 píxeles a la imagen de entrada en todos los lados.
    • -channel RGBA -alpha on: Esto habilita las operaciones de canal alfa.
    • -background none: Esto establece el color de fondo como transparente.
    • -flatten: Esto fusiona todas las capas de la imagen para que las áreas transparentes no se llenen con el color de fondo.
    • output.png: Este es el nombre del archivo de salida.

    Al agregar las opciones -channel RGBA -alpha on, le estás indicando a ImageMagick que solo realice la operación de borde en las partes visibles de la imagen y que no modifique los canales alfa existentes. La opción -background none establece el color de fondo como transparente, lo cual garantiza aún más la preservación de cualquier transparencia existente en la imagen. La opción -flatten fusiona todas las capas de la imagen para preservar la transparencia también.

    Usar este comando debería resultar en una imagen de salida que tenga un borde rojo de 10 px alrededor de la imagen transparente original, con las partes transparentes de la imagen sin cambios.

Comments are closed.