J'ai un dossier de fichiers png qui ont des arrière-plans transparents. Je voudrais les convertir depuis la ligne de commande et conserver les arrière-plans transparents des images.
J'apprécierais toute aide.
Étant donné que jpgs ne prend pas en charge la transparence, comment puis-je spécifier la valeur hexadécimale de la couleur d'arrière-plan du jpg de sortie? En ce moment, c'est par défaut #ffffff
? J'ai essayé ce script, mais il donne au fond de sortie jpgs un fond blanc:
mogrify -quality 100 -format jpg *.png
Mettre à jour
J'ai créé ces fichiers png dans Inkscape. Je dois mentionner que mon objectif en convertissant ces pngs en jpgs est de se débarrasser des bords dentelés sur les objets circulaires ou angulaires. Les pngs ont actuellement des bords irréguliers et j'ai lu que les convertir en jpgs pourrait résoudre ce problème. Cependant, la conversion via la méthode décrite dans la réponse de Christian Skjødt donne aux images des bords encore plus irréguliers. Existe-t-il un moyen de convertir les pngs en jpg et d'utiliser également l'anti-aliasing ou peut-être une autre technique pour se débarrasser des bords irréguliers? Merci pour l'aide.
Réponses:
Pour lisser les bords, vous pouvez créer des fichiers PNG 10x plus grands que votre taille cible, puis redimensionner avec l'anticrénelage en JPG. J'ai fait cela en utilisant Python et la bibliothèque d'imagerie Python à bon escient, mais je ne sais pas comment le faire en utilisant d'autres outils.
la source
Le format JPEG ne prend pas en charge la transparence. Par conséquent, le maintien des arrière-plans transparents n'est pas possible si vous souhaitez (ou devez) utiliser le format JPEG. Voir Wikipedia pour un aperçu des capacités des différents formats d'image.
Notez que le JPEG 2000 prend en charge la transparence, mais il est beaucoup moins courant que le format JPEG. Cela dépend de votre cas d'utilisation s'il s'agit d'une alternative viable.
la source
À votre deuxième question:
Pour spécifier la couleur d'arrière-plan lors de la conversion de vos images, vous pouvez utiliser l'
-fill
option:L'utilisation
-background
fournit des résultats similaires. N'oubliez pas le-opaque none
.la source
Je suis désolé, il n'y a aucun moyen, le
jpeg
format ne supporte pas unalpha channel
donc vous ne pouvez pas avoir de transparence.la source
en fonction de ce que vous essayez de faire avec l'image, il peut être possible de placer le canal alpha dans une image en niveaux de gris ou un masque de bits séparé, et le programme qui utilise l'image appliquerait l'image auxiliaire comme valeurs translucides / transparentes . Bien qu'il soit finalement préférable de modifier le programme pour qu'il prenne en charge l'alpha png.
la source