Livello di immagine PNG invisibile visibile solo come sfondo


48

Di recente mi sono imbattuto in un'immagine molto particolare, con strane proprietà. L'immagine è in formato PNG e mostra solo un uccello semplice con uno sfondo trasparente. Il mio amico mi ha inviato l'immagine con semplici istruzioni solo per salvarlo e impostarlo come sfondo.

Immagine originale con solo il gabbiano

Dopo aver impostato l'immagine come sfondo, appare una seconda immagine che mostra in effetti il ​​gabbiano in piedi su un'arma:

Immagine di sfondo con un livello segreto?

Questo all'inizio mi ha incuriosito molto sulla natura dell'immagine e su come realizzare tale immagine. Ho aperto l'immagine in Photoshop e non appare nulla di straordinario: l'immagine è sempre la stessa del gabbiano trasparente, non ci sono strati o maschere nascosti per renderla invisibile. Dopo aver controllato l'immagine in Photoshop, avevo pensato che Windows avesse apportato modifiche al file quando lo avevo impostato come sfondo del desktop - dopo aver navigato %AppData%\Microsoft\Windows\Themessull'immagine sembrava essere lo stesso.

Perché questa immagine mostra un livello nascosto separato o un'immagine completamente separata quando impostata come sfondo del desktop di Windows rispetto alla visualizzazione o alla modifica in Photoshop?


6
Aprilo con XnView, fai clic su "Rimuovi canale alfa" e vedrai l'immagine completa. Di Windows 7 converte sfondi in JPEG, perdendo la trasparenza answers.microsoft.com/en-us/windows/forum/windows_7-desktop/...
leonbloy

Risposte:


59

Immagino sia quello che è stato chiamato "Trasparenza sporca" in questo articolo di Smashing Magazine .

Essenzialmente qualsiasi colore nei PNG trasparenti può essere descritto da un valore RGBA, dove RGB sta per i canali Rosso, Verde e Blu e A sta per Alfa. I colori "invisibili" possono avere qualsiasi valore RGB + 0 Alpha, il che significa che il colore manterrà le informazioni originali, ma renderà trasparente perché il suo alfa è impostato su 0.

Perché dovresti voler memorizzare i valori RGB quando Alpha è in uso? In questo modo puoi ottenere bordi uniformi e colori trasparenti, a differenza dei bordi frastagliati nelle GIF con sfondo trasparente. La trasparenza in PNG può andare da 0 a 255, nelle GIF è trasparente al 100% o opaca. Per renderizzare qualcosa, diciamo, al 50% di trasparenza, dovrai comunque conoscere i valori RGB, quindi il valore viene memorizzato. La maggior parte dei software di editor di immagini elimina le informazioni RGB durante il salvataggio di un colore completamente trasparente, incluso Photoshop.

Non posso parlare per le versioni CC, ma per vedere i colori "invisibili" nelle versioni precedenti di Photoshop avrai bisogno di un plugin. Scegli uno: Photofreebies o SuperPNG . Il SuperPNG sembra più recente e meno ingombrante.

Perché il trucco funziona? Gli sfondi devono essere opachi perché non c'è nulla di "dietro" da mostrare, giusto? La mia ipotesi è che Windows scarti le informazioni del canale Alpha, rivelando i valori RGB nascosti nel processo.


6
ho appena provato quello che hai detto rimuovendo la maschera del livello di trasparenza (canale alfa), che non mi era mai venuta in mente - facendo così sono stato in grado di replicare l'effetto. Questo è un modo molto interessante di creare sfondi, credo che esplorerò molto presto le sue capacità di pesca a traina: D
Callum,

15
Direi che questo è un bug in Windows. Se il valore alfa di un pixel è 0, allora il pixel è trasparente e i valori RGB non dovrebbero avere importanza. Windows dovrebbe eseguire il rendering di un'immagine che contiene trasparenza sopra qualcos'altro, ad esempio uno sfondo bianco.
Paul,

5
@Paolo. D'accordo, tranne che sarebbe il colore di sfondo definito per il desktop, lo stesso colore che viene usato se l'immagine non è allungata o piastrellata ed è troppo piccola per riempire il desktop. La metafora è che lo sfondo è sopra una superficie o una parete di un colore solido.
truscamente

3
Sarei molto sorpreso se Adobe Photoshop avesse bisogno di un plug-in per raggiungere questo obiettivo - mi aspetto che offra controlli simili a GIMP, ad esempio regolando i valori alfa con curve o livelli di strumenti (questo è solo due dei molti modi per rendere visibili le parti trasparenti).
Michael Schumacher,

2
@MichaelSchumacher Sarai sorpreso da come Photoshop può mancare in alcune aree. Ad essere sinceri, non ho idea se l'attuale versione CC la supporti già. Ho deciso di attenermi al mio PS con licenza perpetua, quindi la mia versione è ormai quasi obsoleta.
Rhaenys,

13

Per aggiungere alla risposta di Nihal , questo può essere riprodotto usando il pennello "anti-cancellazione" in GIMP. Il pennello Cancella può aggiungere o rimuovere un canale alfa se l'immagine utilizza un formato che la supporta, (tieni premuto Alt per passare dalla cancellazione alla cancellazione).

Per Krita, si può fare questo: Layer > Split Alpha > Alpha into Mask. Dopo averlo fatto, puoi nascondere o eliminare il canale Trasparenza maschera 1 appena creato e vedrai l'immagine completa.

Poiché lo sfondo di Windows non può avere nulla dietro, probabilmente sta solo rimuovendo la trasparenza e mostrando l'immagine senza di essa (immagine a 32 bit veloce e sporca a 24 bit dall'aspetto di essa).


3

Un punto di chiarimento: questo non è un bug, è un comportamento specificato nella specifica png. In particolare la specifica afferma che se un visualizzatore o un convertitore non è in grado di comprendere la trasparenza o la trasparenza non è appropriato per un contesto o utilizzare il canale alfa potrebbe essere ignorato. Inoltre, la specifica richiede che tutti i generatori di immagini impostino i colori trasparenti in modo che l'immagine sia utile se il canale alfa viene ignorato. (la mia parafrasi, sono passati un paio d'anni da quando ho letto le specifiche.)


1
Potresti provare a trovare i passaggi pertinenti dalle specifiche? Perché non riesco a trovarlo in w3.org/TR/PNG . Grazie!
MarnixKlooster ReinstateMonica
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.