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.
Respuestas:
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.
fuente
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.
fuente
A tu segunda pregunta:
Para especificar el color de fondo al convertir sus imágenes, puede usar la
-fill
opción:El uso
-background
proporciona resultados similares. No olvides el-opaque none
.fuente
Lo siento, no hay forma, el
jpeg
formato no es compatible con,alpha channel
por lo que no puede tener transparencia.fuente
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.
fuente