¿Cómo puedo convertir una carpeta de .pngs a .jpgs mientras configuro el color de fondo?


10

Tengo una carpeta de archivos png que tienen fondos transparentes. Me gustaría convertirlos desde la línea de comandos y mantener los fondos transparentes de las imágenes.

Agradecería cualquier ayuda.

Como jpgs no admite la transparencia, ¿cómo puedo especificar el valor hexadecimal del color de fondo del jpg de salida? En este momento, el valor predeterminado es #ffffff? He probado este script, pero le da a la salida jpgs fondos blancos:

mogrify -quality 100 -format jpg *.png

Actualizar

Creé estos archivos png en inkscape. Debo mencionar que mi objetivo al convertir estos pngs a jpgs es deshacerme de los bordes irregulares en objetos circulares o angulares. Los pngs actualmente tienen bordes irregulares y leí que convertirlos a jpgs podría resolver este problema. Sin embargo, la conversión a través del método descrito en la respuesta de Christian Skjødt le da a las imágenes bordes irregulares aún peores. ¿Hay alguna manera de convertir los pngs a jpg y también usar anti-aliasing o tal vez otra técnica para deshacerme de los bordes irregulares? Gracias por la ayuda.


3
Es bastante difícil responder a su pregunta si cambia todo el tiempo ... Para referencia futura: Intente incluir lo que desea lograr en su pregunta desde el principio. Re su "actualización 2": ¿Es la "irregularidad" simplemente el resultado de su resolución elegida? ¿Qué sucede si aumenta la resolución (el número de DPI en el cuadro de diálogo "Exportar mapa de bits ...")?
Marcel Stimberg

Respuestas:


3

Para suavizar los bordes, puede crear los PNG 10 veces más grandes que su tamaño de destino, luego cambiar el tamaño con suavizado a JPG. He hecho esto usando Python y Python Imaging Library con buenos resultados, pero no estoy seguro de cómo hacerlo con otras herramientas.


28

El formato JPEG no admite transparencia, por lo tanto, no es posible mantener los fondos transparentes si desea (o tiene que) usar el formato JPEG. Consulte Wikipedia para obtener una descripción general de las capacidades de los diferentes formatos de imagen.

Tenga en cuenta que el JPEG 2000 sí es compatible con la transparencia, pero es mucho menos común que el formato JPEG. Depende de su caso de uso si esta es una alternativa viable.


Puede que me equivoque, pero el OP pregunta sobre la configuración del color de las áreas transparentes. Se están haciendo blancos, pero el OP podría usar azul, por ejemplo.
nanofarad

16

A tu segunda pregunta:

Para especificar el color de fondo al convertir sus imágenes, puede usar la -fillopción:

mogrify -quality 100 -format jpg -fill "#FF0000" -opaque none *.png

El uso -backgroundproporciona resultados similares. No olvides el -opaque none.


Hey gracias por la ayuda. ¿Hay alguna manera de que pueda antialias la salida jpeg a través de este comando? Consulte la actualización 2 anterior para obtener un contexto adicional. Gracias.
James

4

Lo siento, no hay forma, el jpegformato no es compatible con, alpha channelpor lo que no puede tener transparencia.


0

dependiendo de lo que intente hacer con la imagen, podría ser posible colocar el canal alfa en una imagen en escala de grises o una máscara de bits, y el programa que está utilizando la imagen aplicaría la imagen auxiliar como valores translúcidos / transparentes . Aunque en última instancia es mejor modificar el programa para que sea compatible con alpha png.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.