Couche d'image PNG invisible visible uniquement en tant qu'arrière-plan


48

Je suis récemment tombé sur une image très particulière, avec des propriétés étranges. L'image est au format PNG et ne montre qu'un oiseau simple avec un fond transparent. Mon ami m'a envoyé l'image avec des instructions simples juste pour l'enregistrer et la définir comme fond d'écran.

Image originale avec juste la mouette

Après avoir défini l'image comme arrière-plan, une deuxième image apparaît pour montrer qu'en fait la mouette se tenant sur une arme:

Image de fond avec une couche secrète?

Au début, cela m'a rendu très curieux de la nature de l'image et de la manière de réaliser cette image. J'ai ouvert l'image dans Photoshop et rien ne sort de l'ordinaire - l'image est toujours la même que celle de la mouette transparente, il n'y a pas de calques ni de masques masqués pour la rendre invisible. Après avoir vérifié l’image dans Photoshop, j’avais pensé que Windows avait modifié le fichier lorsqu’il était défini sur l’arrière-plan de mon bureau %AppData%\Microsoft\Windows\Themes.

Pourquoi cette image montre-t-elle un calque masqué séparé ou une image complètement distincte lorsqu'elle est définie comme fond d'écran du bureau Windows par rapport à l'affichage ou la modification dans Photoshop?


6
Ouvrez-le avec XnView, cliquez sur "Supprimer le canal alpha" et vous verrez l'image complète. Windows 7 convertit au format JPEG, arrière - plans perdre la transparence answers.microsoft.com/en-us/windows/forum/windows_7-desktop/...
leonbloy

Réponses:


59

J'imagine que c'est ce qui s'appelait "Dirty Transparency" dans cet article de Smashing Magazine .

En gros, toutes les couleurs des PNG transparents peuvent être décrites par une valeur RGBA, où RVB représente les canaux rouge, vert et bleu et A, Alpha. Les couleurs "invisibles" peuvent avoir n'importe quelle valeur RVB + 0 Alpha, ce qui signifie que la couleur conservera les informations d'origine mais sera rendue transparente car son alpha est défini sur 0.

Pourquoi voudriez-vous stocker les valeurs RVB quand Alpha est utilisé? Vous pouvez ainsi obtenir des bords lisses et des couleurs transparentes, à la différence des bords irréguliers des fichiers GIF à fond transparent. La transparence en PNG peut aller de 0 à 255, dans les GIF, elle est 100% transparente ou opaque. Pour obtenir un rendu avec une transparence de 50%, par exemple, vous devez toujours connaître les valeurs RVB. Par conséquent, la valeur est stockée. La plupart des logiciels d'édition d'images ignorent ces informations RVB lors de l'enregistrement d'une couleur entièrement transparente, y compris Photoshop.

Je ne peux pas parler pour les versions CC, mais pour voir les couleurs "invisibles" des anciennes versions de Photoshop, vous aurez besoin d'un plugin. Choisissez-en un: Photofreebies ou SuperPNG . SuperPNG semble plus récent et moins encombré.

Pourquoi l'astuce fonctionne? Les papiers peints doivent être opaques car il n'y a rien "derrière" à montrer, non? Je suppose que Windows supprime les informations du canal Alpha, révélant ainsi les valeurs RVB cachées.


6
Je viens d'essayer ce que vous avez dit en enlevant le masque de calque de transparence (canal alpha), que je n'avais jamais pensé à moi - en faisant cela, j'ai pu reproduire l'effet. C’est une façon très cool de créer des arrière-plans. Je pense que j’explorerai très bientôt ses capacités de pêche à la traîne: D
Callum

15
Je dirais que c'est un bogue dans Windows. Si la valeur alpha d'un pixel est 0, le pixel est transparent et les valeurs RVB ne devraient pas avoir d'importance. Windows doit rendre une image contenant de la transparence par-dessus un autre élément, par exemple un arrière-plan blanc.
Paul le

5
@Paul. D'accord, sauf qu'il s'agirait de la couleur d'arrière-plan définie pour le bureau, de la même couleur que celle utilisée si l'image n'est pas étirée ou en mosaïque et qu'elle est trop petite pour remplir le bureau. La métaphore est que le papier peint est au-dessus d'une surface ou d'un mur de couleur unie.
Trlkly

3
Je serais très surpris si Adobe Photoshop nécessitait un plug-in pour y parvenir. Je pense qu'il offrirait des contrôles similaires à GIMP, par exemple en ajustant les valeurs alpha à l'aide d'outils de courbes ou de niveaux (ce n'est que deux des nombreuses façons rendre les parties transparentes visibles).
Michael Schumacher

2
@ MichaelSchumacher Vous seriez surpris de voir à quel point Photoshop peut faire défaut dans certains domaines. Pour être juste, je ne sais pas si la version actuelle de CC le supporte déjà. J'ai décidé de rester avec mon PS sous licence perpétuelle, ma version est donc presque obsolète à présent.
Rhaenys

13

Pour ajouter à la réponse de Nihal , cela peut être reproduit en utilisant le pinceau "anti-effacement" dans GIMP. Le pinceau Effacer peut ajouter ou supprimer un canal alpha si l'image utilise un format qui le prend en charge (maintenez la touche Alt enfoncée pour permuter entre l'effacement et l'anti-effacement).

Pour Krita, vous pouvez le faire: Layer > Split Alpha > Alpha into Mask. Cela fait, vous pouvez masquer ou supprimer le canal du masque de transparence 1 qui vient d'être créé et vous verrez l'image complète.

Etant donné que l'arrière-plan Windows ne peut rien avoir derrière, il est probablement difficile de supprimer la transparence et d'afficher l'image sans l'image (image 32 bits rapide et sale en 24 bits).


3

Un point de clarification: Ce n'est pas un bogue, c'est un comportement spécifié dans la spécification png. Spécifiquement, la spécification indique que si un visualiseur ou un convertisseur ne peut pas comprendre la transparence, la transparence n'est pas appropriée pour un contexte ou l'utilisation du canal alpha peut être ignorée. De plus, la spécification demande à tous les générateurs d'image de définir les couleurs transparentes de sorte que l'image soit utile si le canal alpha est ignoré. (ma paraphrase, cela fait quelques années que j'ai lu les spécifications.)


1
Pourriez-vous essayer de trouver le ou les passages pertinents de la spécification? Parce que je ne le trouve pas dans w3.org/TR/PNG . Merci!
MarnixKlooster ReinstateMonica
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.