Yalnızca arka plan olarak görülebilen görünmez PNG resim katmanı


48

Son zamanlarda garip özelliklere sahip çok tuhaf bir görüntüyle karşılaştım. Resim PNG formatında ve sadece şeffaf bir arka plana sahip basit bir kuş gösterir. Arkadaşım bana basit talimatlarla görüntüyü yolladı ve kaydetmemi sağladı.

Sadece martı ile orijinal görüntü

Görüntüyü arka planım olarak ayarladıktan sonra, ikinci bir görüntü, martının bir silah üzerinde durduğunu gösteriyor:

Gizli bir katman ile arka plan görüntüsü?

Bu ilk bakışta beni görüntünün doğası ve nasıl bir görüntü yaratacağı konusunda çok meraklandırdı. Görüntüyü Photoshop'ta açtım ve sıra dışı hiçbir şey görünmüyor - görüntü hala şeffaf martı ile aynı, görünmez kılmak için gizli katmanlar veya maskeler yok. Photoshop'ta görüntüyü kontrol ettikten sonra, Windows'un masaüstü arka planım olarak ayarlarken dosyada değişiklikler yaptığını düşünmüştüm - %AppData%\Microsoft\Windows\Themesgörüntüye gittikten sonra aynı görünüyordu.

Bu görüntü neden Photoshop'ta görüntülenmeye veya düzenlenmeye kıyasla Windows Masaüstü Arka Planı olarak ayarlandığında ayrı bir gizli katman veya tamamen ayrı bir görüntü gösteriyor?


6
XnView ile açın, "Alfa Kanalını Kaldır" ı tıkladığınızda tam resmi göreceksiniz. JPEG Windows 7 dönüştürür arka planlar, şeffaflık kaybetme answers.microsoft.com/en-us/windows/forum/windows_7-desktop/...
leonbloy

Yanıtlar:


59

Sanırım Smashing Magazine'den bu yazıda "Kirli Şeffaflık" deniyordu .

Temel olarak saydam PNG'lerdeki herhangi bir renk, RGB'nin Kırmızı, Yeşil ve Mavi kanalları ve A'nın Alfa'yı temsil ettiği bir RGBA değeri ile tanımlanabilir. "Görünmez" renklerde herhangi bir RGB değeri + 0 Alfa olabilir; bu, rengin orijinal bilgiyi koruyacağı, ancak alfa değeri 0 olarak ayarlandığından saydam hale geleceği anlamına gelir.

Alpha kullanılırken neden RGB değerlerini saklamak istiyorsunuz? Böylece saydam arka plan GIF'lerinde tırtıklı kenarlardan farklı olarak yumuşak kenarlar ve saydam renkler elde edebilirsiniz. PNG'de saydamlık 0'dan 255'e kadar gidebilir, GIF'lerde% 100 saydam veya opaktır. Bir şeyi oluşturmak için% 50 şeffaflık diyelim ki, RGB değerlerini bilmeniz gerekir, bu nedenle değer saklanır. Bir çok görüntü düzenleyici yazılımı, Photoshop dahil, tamamen şeffaf bir renk kaydederken bu RGB bilgilerini atar.

CC sürümleri için konuşamam, ancak eski Photoshop sürümlerinde "görünmez" renkleri görmek için bir eklentiye ihtiyacınız olacak. Birini seçin: Fotoğraf freebies veya SuperPNG . SuperPNG daha yeni ve daha az karmaşık görünüyor.

Bu numara neden işe yarıyor? Duvar kağıtları opak olmalıdır çünkü içinden geçecekleri "arkasında" bir şey yoktur, değil mi? Tahminime göre, Windows, işlemdeki gizli RGB değerlerini açığa çıkaran Alpha kanal bilgisini atar.


6
Ben sadece söylediğim şeyi yaptım ki saydamlık katmanı maskesini (alfa kanalı) çıkardım, bu benim başıma hiç gelmemişti - bunu yaparak efekti çoğaltabildim. Bu, arka plan yapmanın çok havalı bir yoludur, çok yakında trolling yeteneklerini keşfedeceğimi düşünüyorum: D
Callum

15
Bunun Windows'ta bir hata olduğunu söyleyebilirim. Bir pikselin alfa değeri 0 ise, piksel şeffaftır ve RGB değerleri önemli olmamalıdır. Windows, beyaz bir arka plan gibi başka bir şeyin üstüne şeffaflık içeren bir görüntü oluşturmalıdır.
Paul

5
@ Paul. Kabul edildi, Masaüstünün tanımlanmış arka plan rengi olması dışında, görüntü uzatılmadığında veya döşenmediğinde ve masaüstünü doldurmak için çok küçükse kullanılan renk. Metafor, duvar kağıdının düz renkteki bir yüzey veya duvarın üstünde olmasıdır.
trlkly

3
Adobe Photoshop bunu başarmak için bir eklentiye ihtiyaç duyuyorsa çok şaşırırdım - GIMP'ye benzer kontroller sunmasını beklerdim, örneğin alfa değerlerini eğriler veya seviye araçlarıyla ayarlama (bu, birçok yoldan sadece iki tanesi) şeffaf parçaları görünür yapmak için).
Michael Schumacher

2
@MichaelSchumacher Photoshop'un belirli alanlarda ne kadar eksik olabileceğine şaşıracaksınız. Adil olmak gerekirse, şu anki CC sürümü zaten destekliyorsa, hiçbir fikrim yok. Sürekli lisanslı PS'ime bağlı kalmaya karar verdim, bu yüzden sürümüm şu anda kullanılmıyor.
Rhaenys,

13

Nihal'in cevabını eklemek için , bu GIMP'deki "silme önleyici" fırça kullanılarak tekrarlanabilir. Görüntüyü destekleyen bir format kullanıyorsa, Silme fırçası bir alfa kanalı ekleyebilir veya kaldırabilir (silme ve silmeyi önleme arasında geçiş yapmak için Alt tuşunu basılı tutun).

Krita için, bunu yapabilirsiniz: Layer > Split Alpha > Alpha into Mask. Bunu yaptıktan sonra, yeni oluşturulan Saydamlık Maskesi 1 kanalını gizleyebilir veya silebilirsiniz ve tam resmi göreceksiniz.

Windows arkaplanının arkasında hiçbir şey olamayacağından, büyük olasılıkla şeffaflığı ortaya çıkarmak ve görüntüyü onsuz göstermek (hızlı ve kirli 32 bit görüntü, görünümünden 24 bit'e kadar).


3

Bir açıklama: Bu bir hata değildir, png belirtiminde davranış belirtilir. Spesifik olarak spesifikasyon, eğer bir izleyici veya dönüştürücü saydamlığı anlayamıyorsa veya saydamlığın bir bağlam için uygun olmadığını veya alfa kanalını kullanmanın ihmal edilebileceğini belirtir. Ayrıca, şartname tüm görüntü üreticilerini, saydam renkleri ayarlamaya çağırır, böylece alfa kanalı göz ardı edilirse görüntünün yararlı olmasını sağlar. (benim deyim, şartnameyi okuduğumdan beri birkaç yıl geçti.)


1
Lütfen şartnameden uygun bölüm (ler) i bulmayı deneyebilir misiniz? Çünkü bunu w3.org/TR/PNG'de bulamıyorum . Teşekkürler!
MarnixKlooster ReinstateMonica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.