2010-11-15 22 views
11

Ecco un'immagine: Gradient1 http://adamhaskell.net/img/gradient1.png
Questa immagine è una semplice sfumatura da nero a trasparente salvata in PNG RGBA completo.Trasparenza alfa nelle immagini indicizzate-png

Ecco la stessa immagine, convertito in scala di alfa PNG da GIMP (Photoshop produce lo stesso risultato)
Gradient2 http://adamhaskell.net/img/gradient1b.png
Come si può vedere, il gradiente è ora mezza opaco, semitrasparente.

Ecco la stessa immagine di nuovo, solo che questa volta è stato convertito in indicizzati-alfa PNG da uno script PHP che ho scritto:
Gradient3 http://adamhaskell.net/img/gradient1c.png

Quindi la mia domanda è: perché sono GIMP e Photoshop in grado di sostenere parziale trasparenza nelle immagini indicizzate, quando lo script PHP mostra chiaramente che tale immagine può essere creata senza problemi?
C'è qualcosa di "sbagliato" con un'immagine il cui pallet contiene informazioni alfa?
Una domanda più legata alla programmazione: questa trasparenza nell'ultima immagine funziona in Internet Explorer 6?

+0

'optipng -force' lo salva correttamente come indicizzato-alfa. –

risposta

3

Ho finalmente trovato la risposta effettiva: esiste una voce di metadati che consente di definire il valore alfa di ciascun colore nella tabella dei colori. La maggior parte dei programmi di grafica non ne fa uso, ma esiste e può essere utilizzata, in particolare da GD.

+0

Lo hai fatto a mano o con un plugin, perché non riesco a immaginare di farlo a mano per le immagini esistenti. –

+0

Io uso GD per tutte le mie esigenze di immagine programmabile;) –

+0

GD? Devo essere ricordato o semplicemente informato? (Non disegno grafico, o?) –

1

Sì, lo so cosa intendi. Fireworks è l'unico programma di editing di immagini che so che può creare e modificare PNG8 + Alpha senza problemi. Vorrei che più programmi di pittura supportassero questo formato, perché Fireworks è costoso!

+2

[ImageAlpha] (http://pngmini.com) lo fa gratis e IMHO meglio di Fireworks. – Kornel

+0

C'è anche [Color quantizer (Windows)] (http://x128.ho.ua/color-quantizer.html) e [Pngnq (Windows e Mac)] (http://pngnq.sourceforge.net/). Lo sviluppatore di quest'ultimo vuole creare un plugin GIMP, ma GIMP non offre la tavolozza, dice. Forse qualcuno con più tempo di me può convincerlo o usare questo o qualcosa del genere? Heh .. –

4

Un'altra opzione oltre ai fuochi d'artificio è pngquant, un'applicazione a riga di comando che convertirà un png rgba in un png indicizzato con trasparenza.

Ho trovato this post che parla ancora di come utilizzarlo.

IE6 e precedenti in Windows non supportano PNG a trasparenza variabile senza fastidiose soluzioni. Un PNG indicizzato mostrerà solo le parti completamente opache che di solito funzionano piuttosto bene. Un'ombra esterna scomparirebbe, ma le parti opache del logo o dell'icona continuerebbero a essere visualizzate.

Questa pagina ha una spiegazione migliore e con più istruzioni di compressione PNG e quantizzazione strumenti: http://calendar.perfplanet.com/2010/png-that-works/

4

Per la cronaca, PNG non letteralmente supportare immagini indicizzate con un canale alfa. Quello che sta realmente accadendo è che PNG ti permette di aggiungere colori aggiuntivi alla tabella dei colori (cioè all'indice) con valori alfa in quei colori ... non un canale alfa completo. FWIW ...

Problemi correlati