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.
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:
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?
Réponses:
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.
la source
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).
la source
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.)
la source