Come posso convertire una cartella di .png in .jpg durante l'impostazione del colore di sfondo?


10

Ho una cartella di file png con sfondi trasparenti. Vorrei convertirli dalla riga di comando e mantenere gli sfondi trasparenti delle immagini.

Gradirei qualsiasi aiuto.

Poiché i jpg non supportano la trasparenza, come posso specificare il valore esadecimale del colore di sfondo del jpg di output? In questo momento per impostazione predefinita #ffffff? Ho provato questo script, ma dà all'output sfondi bianchi jpg:

mogrify -quality 100 -format jpg *.png

Aggiornare

Ho creato questi file png in inkscape. Dovrei menzionare che il mio obiettivo nel convertire questi png in jpg è di eliminare i bordi frastagliati su oggetti circolari o angolari. I png attualmente hanno bordi frastagliati e ho letto che convertirli in jpg potrebbe risolvere questo problema. Tuttavia, la conversione tramite il metodo indicato nella risposta di Christian Skjødt rende le immagini con bordi frastagliati ancora peggiori. C'è un modo in cui posso convertire i png in jpg e usare anche l'antialiasing o forse un'altra tecnica per sbarazzarmi dei bordi frastagliati? Grazie per l'aiuto.


3
È abbastanza difficile rispondere alla tua domanda se cambia continuamente ... Per riferimento futuro: prova a includere ciò che vuoi ottenere nella tua domanda dall'inizio. Per quanto riguarda il tuo "aggiornamento 2": il "frastuono" è semplicemente il risultato della risoluzione che hai scelto? Cosa succede se si aumenta la risoluzione (il numero DPI nella finestra di dialogo "Esporta bitmap ...")?
Marcel Stimberg,

Risposte:


3

Per smussare i bordi è possibile creare PNG 10 volte più grandi della dimensione target, quindi ridimensionare con l'anti-aliasing in JPG. L'ho fatto usando Python e Python Imaging Library con buoni risultati, ma non sono sicuro di come farlo usando altri strumenti.


28

Il formato JPEG non supporta la trasparenza, pertanto non è possibile mantenere gli sfondi trasparenti se si desidera (o si deve) utilizzare il formato JPEG. Vedi Wikipedia per una panoramica delle capacità di diversi formati di immagine.

Si noti che JPEG 2000 supporta effettivamente la trasparenza, ma è molto meno comune del formato JPEG. Dipende dal tuo caso d'uso se questa è un'alternativa praticabile.


Potrei sbagliarmi, ma l'OP sta chiedendo di impostare di che colore sono fatte le aree trasparenti. Stanno diventando bianchi, ma l'OP potrebbe usare il blu, per esempio.
nanofarad,

16

Alla tua seconda domanda:

Per specificare il colore di sfondo durante la conversione delle immagini è possibile utilizzare l' -fillopzione:

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

L'uso -backgroundfornisce risultati simili. Non dimenticare il -opaque none.


Ehi, grazie per l'aiuto. C'è un modo in cui posso antialias l'output jpeg tramite questo comando? Vedere l'aggiornamento 2 sopra per un contesto aggiuntivo. Grazie.
James,

4

Mi dispiace che non ci sia modo, il jpegformato non supporta e alpha channelquindi non si può avere la trasparenza.


0

a seconda di cosa si sta tentando di fare con l'immagine, potrebbe essere possibile mettere il canale alfa in un'immagine in scala di grigi separata o in una maschera di bit e il programma che sta usando l'immagine applicherebbe l'immagine ausiliaria come valori traslucidi / trasparenti . Anche se alla fine è meglio modificare il programma in modo che supporti alpha png.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.