Recentemente, deparei com uma imagem muito peculiar, com propriedades estranhas. A imagem está no formato PNG e mostra apenas um pássaro simples com um fundo transparente. Meu amigo me enviou a imagem com instruções simples apenas para salvá-la e defini-la como plano de fundo.
Depois de definir a imagem como plano de fundo, uma segunda imagem parece mostrar que, de fato, a gaivota está em uma arma:
A princípio, fiquei muito curioso com a natureza da imagem e como fazê-la. Abri a imagem no Photoshop e nada fora do comum aparece - a imagem ainda é a mesma da gaivota transparente, não há camadas ou máscaras ocultas para torná-la invisível. Depois de verificar a imagem no Photoshop, pensei que o Windows fizesse alterações no arquivo ao defini-lo como plano de fundo da área de trabalho - depois de navegar para %AppData%\Microsoft\Windows\Themes
a imagem parecia o mesmo.
Por que essa imagem mostra uma camada oculta separada ou uma imagem completamente separada quando definida como plano de fundo da área de trabalho do Windows em comparação com a exibição ou edição no Photoshop?
Respostas:
Acho que é o que foi chamado de "Dirty Transparency" neste artigo da Smashing Magazine .
Essencialmente, qualquer cor em PNGs transparentes pode ser descrita por um valor RGBA, em que RGB representa os canais Vermelho, Verde e Azul e A significa Alpha. As cores "invisíveis" podem ter valores RGB + 0 Alfa, o que significa que a cor reterá as informações originais, mas ficará transparente porque o alfa está definido como 0.
Por que você deseja armazenar os valores RGB quando o Alpha está sendo usado? Assim, você pode obter bordas suaves e cores transparentes - ao contrário das bordas irregulares nos GIFs de fundo transparente. A transparência no PNG pode ir de 0 a 255, nos GIFs é 100% transparente ou opaco. Para renderizar algo com, digamos, 50% de transparência, você ainda precisará conhecer os valores RGB, portanto, o valor é armazenado. A maioria dos softwares de edição de imagem descarta essas informações RGB ao salvar uma cor totalmente transparente, incluindo o Photoshop.
Não posso falar das versões CC, mas para ver as cores "invisíveis" nas versões mais antigas do Photoshop, você precisará de um plugin. Escolha um: Photofreebies ou SuperPNG . O SuperPNG parece mais recente e menos confuso.
Por que o truque funciona? Os papéis de parede devem ser opacos porque não há nada "por trás" deles para mostrar, certo? Meu palpite é que o Windows descarta as informações do canal Alpha, revelando os valores RGB ocultos no processo.
fonte
Para adicionar à resposta de Nihal , isso pode ser reproduzido usando o pincel "anti-apagamento" no GIMP. O pincel Apagar pode adicionar ou remover um canal alfa se a imagem estiver usando um formato que o suporte (mantenha pressionada a tecla Alt para alternar entre apagar e apagar).
Para Krita, você pode fazer isso:
Layer > Split Alpha > Alpha into Mask
. Depois disso, você pode ocultar ou excluir o canal da Máscara de transparência 1 que acabou de ser criado e você verá a imagem completa.Como o plano de fundo do Windows não pode ter nada por trás, provavelmente está apenas removendo a transparência e exibindo a imagem sem ela (imagem rápida e suja de 32 bits a 24 bits pela aparência).
fonte
Um ponto de esclarecimento: Este não é um erro, é um comportamento especificado na especificação png. Especificamente, a especificação afirma que, se um visualizador ou conversor não puder entender a transparência ou a transparência não for apropriada para um contexto ou usar o canal alfa, poderá ser ignorado. Além disso, a especificação solicita que todos os geradores de imagem definam as cores transparentes para que a imagem seja útil se o canal alfa for ignorado. (minha paráfrase, já faz alguns anos desde que li as especificações.)
fonte