Tengo algunas imágenes PNG con transparencia, y necesito crear versiones con la capa de imagen compuesta sobre un fondo blanco. He intentado varias cosas con las operaciones de "conversión" de Image Magick, pero no pasa nada o aparece un error. No quiero ir a un formulario JPG intermedio porque no quiero los artefactos. Por supuesto, es fácil hacer esto en Gimp o Photoshop o lo que sea, pero realmente prefiero escribirlo desde la línea de comandos porque hay muchas de estas cosas.
Un ejemplo de un comando Image Magick que no funciona es:
convert img1.png -background white -flatten img1-white.png
Eso da como resultado un error.
¡Gracias!
png
imagemagick
alpha-transparency
Puntiagudo
fuente
fuente
Respuestas:
Esto funciona para mi:
Referencias de documentación:
-flatten
opción de línea de comandos-layers
opción de línea de comandos (-flatten
es equivalente a-layers flatten
)fuente
-flatten
. Aplanará las páginas en una sola página.mogrify -flatten *.png
si acaso, no olvide hacer una copia de seguridad. Más información aquí: imagemagick.org/script/mogrify.phpEjemplo:
Siéntase libre de reemplazar
white
con cualquier otro color que desee. La documentación de Imagemagick dice esto sobre la-alpha remove
operación:fuente
-background white
no es necesario (aunque probablemente sea para otros colores).-alpha off
.convert image.png -background white -alpha off white.png
produjo una imagen con un fondo negro.convert image.png -background "#00ff33" -alpha off 00ff33.png
produjo un fondo negroAcoplar imagen y aplicar imagen de fondo es sencillo en ImageMagick
Sin embargo, el orden de los comandos es muy importante.
Para aplicar cualquier fondo en una imagen transparente y aplanarlo, primero aplique el fondo que aplanarlo. Lo contrario no funciona.
fuente
La única que funcionó para mí fue una mezcla de todas las respuestas:
fuente
... -background "#010203" ...
lugar de usar blanco.mogrify -background white -flatten */*.png
-alpha remove
fue lo que hizo por míAquí se explica cómo reemplazar la misma imagen en todas las carpetas en un directorio con blanco en lugar de transparente:
mogrify -background white -flatten */*.png
fuente
Usar -flatten me volvió completamente loco porque -flatten en combinación con mogrify crop y cambiar el tamaño simplemente no funciona. La forma oficial y la única correcta para mí es "eliminar" el canal alfa.
-alpha remove -alpha off (no es necesario con JPG)
Ver documentación: http://www.imagemagick.org/Usage/masking/#remove
fuente
convert imgWithTranspBkg.png -alpha remove -alpha off bkg.jpg resultImg.png
La sección Alpha Remove de la Guía de uso de ImageMagick sugiere usar la
-alpha remove
opción, por ejemplo:... usando el
-background
color que elijas.La guía dice:
Además agrega la nota:
Por lo tanto, si no necesita el canal alfa, puede reducir el tamaño de la imagen de salida agregando la
-alpha off
opción, por ejemplo:Hay más detalles sobre otras técnicas de uso frecuente para eliminar la transparencia descritas en la sección Eliminar la transparencia de las imágenes .
En esa sección se incluye una advertencia importante sobre el uso de
-flatten
como técnica para eliminar la transparencia:Por lo tanto, si está convirtiendo varias imágenes a la vez, por ejemplo, generar miniaturas a partir de un archivo PDF,
-flatten
no hará lo que desea (aplanará todas las imágenes para todas las páginas en una sola imagen). Por otro lado, el uso de la-alpha remove
técnica seguirá produciendo múltiples imágenes, cada una de las cuales tendrá la transparencia eliminada.fuente
Parece que su comando es correcto, por lo que el problema podría deberse a la falta de soporte para PNG (). Puede verificar
convert -list configure
o simplemente probar lo siguiente:fuente
libpng12-0
instalado y trabajando. ¿Puedes ver png si ejecutas esto?convert -list configure | grep \png
Esta no es exactamente la respuesta a su pregunta, pero encontré su pregunta al intentar descubrir cómo eliminar el canal alfa, así que decidí agregar esta respuesta aquí:
Si desea eliminar el canal alfa usando imagemagick, puede usar este comando:
fuente
Bueno, parece que mi decisión de instalar "Magia de gráficos" sobre "Magia de imagen" tiene algunos bordes ásperos: cuando reinstalo la "Magia de imagen" antigua y crujiente, el comando anterior funciona perfectamente bien.
editar , mucho tiempo después: uno de estos días comprobaré si la "magia de gráficos" ha solucionado este problema.
fuente
Necesitaba cualquiera: ambos
-alpha background
y-flatten
, o-fill
.Hice un nuevo PNG con un fondo transparente y un punto rojo en el medio.
convert image.png -background green -alpha off green.png
falló: produjo una imagen con fondo negroconvert image.png -background green -alpha background -flatten green.png
produjo una imagen con el fondo verde correcto.Por supuesto, con otro archivo que renombré
image.png
, no pudo hacer nada. Para ese archivo, descubrí que el color de los píxeles transparentes era "# d5d5d5", así que rellené ese color con verde:convert image.png -fill green -opaque "#d5d5d5" green.png
reemplazó los píxeles transparentes con el verde correcto.fuente
convert image.png -background green -alpha background -alpha off green.png
oconvert image.png -background green -alpha background -alpha remove green.png
oconvert image.png -background green -flatten green.png
Opción de línea sin comando: abra el archivo PNG en Windows Paint y haga clic en Guardar.
fuente
esto crea una imagen simplemente colocando el primero con transparencia encima del segundo
originalmente encontré el consejo en esta publicación
fuente
Para eliminar realmente el canal alfa del archivo, use la opción alpha off :
fuente
Vi esta pregunta y respuestas que realmente me ayudan, pero luego tuve que hacerlo para muchos archivos, por lo que en caso de que tenga varias imágenes (imágenes PNG) en una carpeta y quiera hacerlo para todos:
fuente
Está desactivado, NO eliminado. ¡La carga de la tienda de aplicaciones iOS falla cuando hay un canal alfa en cualquier ícono!
Aquí se explica cómo hacerlo: mogrify -alpha off * .png
fuente