Lapisan gambar PNG yang tak terlihat yang hanya terlihat sebagai latar belakang

48

Saya baru-baru ini menemukan gambar yang sangat aneh, dengan properti aneh. Gambar dalam format PNG dan hanya menampilkan burung sederhana dengan latar belakang transparan. Teman saya mengirimi saya gambar dengan instruksi sederhana hanya untuk menyimpannya dan mengaturnya sebagai latar belakang saya.

Gambar asli hanya dengan burung camar

Setelah mengatur gambar sebagai latar belakang saya, gambar kedua muncul untuk menunjukkan bahwa sebenarnya burung camar berdiri di atas senjata:

Gambar latar belakang dengan lapisan rahasia?

Ini awalnya membuat saya sangat ingin tahu sifat gambar dan bagaimana membuat gambar seperti itu. Saya telah membuka gambar di Photoshop dan tidak ada yang luar biasa muncul - gambar masih sama dengan burung camar transparan, tidak ada lapisan atau topeng tersembunyi untuk membuatnya tidak terlihat. Setelah memeriksa gambar di Photoshop, saya berpikir Windows membuat perubahan pada file ketika mengaturnya sebagai latar belakang desktop saya - setelah menavigasi ke %AppData%\Microsoft\Windows\Themesgambar itu tampak sama.

Mengapa gambar ini menunjukkan lapisan tersembunyi yang terpisah atau gambar yang sepenuhnya terpisah ketika ditetapkan sebagai Latar Belakang Desktop Windows dibandingkan dengan yang dilihat atau diedit di Photoshop?

Callum
sumber
6
Buka dengan XnView, klik "Hapus Alpha Channel", dan Anda akan melihat gambar lengkap. Windows 7 mengonversi latar belakang ke JPEG, kehilangan jawaban
leonbloy

Jawaban:

59

Saya menduga itulah yang disebut "Dirty Transparency" dalam artikel ini dari Smashing Magazine .

Pada dasarnya setiap warna dalam PNG transparan dapat digambarkan dengan nilai RGBA, di mana RGB berarti saluran Merah, Hijau dan Biru dan A adalah singkatan dari Alpha. Warna "tidak terlihat" dapat memiliki nilai RGB + 0 Alpha, yang berarti bahwa warna akan mempertahankan informasi asli, tetapi menjadikannya transparan karena alpha-nya diatur ke 0.

Mengapa Anda ingin menyimpan nilai RGB saat Alpha sedang digunakan? Jadi Anda bisa mendapatkan tepi yang halus dan warna transparan — tidak seperti tepi bergerigi di GIF latar belakang transparan. Transparansi dalam PNG dapat berubah dari 0 hingga 255, dalam GIF 100% transparan atau buram. Untuk membuat sesuatu pada, katakanlah, transparansi 50%, Anda masih perlu mengetahui nilai RGB, maka nilainya disimpan. Sebagian besar perangkat lunak editor gambar membuang informasi RGB ketika menyimpan warna yang sepenuhnya transparan, termasuk Photoshop.

Saya tidak dapat berbicara untuk versi CC, tetapi untuk melihat warna "tidak terlihat" di versi Photoshop yang lebih lama Anda akan memerlukan sebuah plugin. Pilih satu: Photofreebies atau SuperPNG . SuperPNG tampaknya lebih baru dan kurang berantakan.

Mengapa triknya berhasil? Wallpaper harus buram karena tidak ada "belakang" yang dapat mereka tampilkan, bukan? Dugaan saya adalah bahwa Windows membuang informasi saluran Alpha, mengungkapkan nilai-nilai RGB tersembunyi dalam proses.

Rhaenys
sumber
6
Saya baru saja mencoba apa yang Anda katakan dengan menghapus layer mask transparansi (saluran alpha), bahwa saya tidak pernah terpikir oleh saya - dengan melakukan itu saya bisa meniru efeknya. Ini adalah cara yang sangat keren untuk membuat latar belakang, saya pikir saya akan segera menjelajahi kemampuan trollnya: D
Callum
15
Saya akan mengatakan ini adalah bug di Windows. Jika nilai alfa suatu piksel adalah 0, maka piksel tersebut transparan dan nilai RGB seharusnya tidak masalah. Windows harus membuat gambar yang berisi transparansi di atas sesuatu yang lain, misalnya latar belakang putih.
Paul
5
@ Paul. Setuju, Kecuali itu akan menjadi warna latar belakang yang ditentukan untuk desktop, warna yang sama yang digunakan jika gambar tidak diregangkan atau ubin dan terlalu kecil untuk mengisi desktop. Metafora adalah bahwa wallpaper berada di atas permukaan atau dinding dengan warna solid.
trlkly
3
Saya akan sangat terkejut jika Adobe Photoshop membutuhkan plug-in untuk mencapai hal ini - saya berharap akan menawarkan kontrol yang mirip dengan GIMP, misalnya menyesuaikan nilai alpha dengan kurva atau alat level (itu hanya dua dari banyak cara untuk membuat bagian transparan terlihat).
Michael Schumacher
2
@MichaelSchumacher Anda akan terkejut dengan kekurangan Photoshop di area tertentu. Agar adil saya tidak tahu apakah versi CC saat ini sudah mendukungnya. Saya memutuskan untuk tetap menggunakan PS saya yang berlisensi terus-menerus, jadi versi saya sudah hampir usang sekarang.
Rhaenys
13

Untuk menambah jawaban Nihal , ini dapat direproduksi dengan menggunakan sikat "anti-hapus" di GIMP. Sikat Erase dapat menambah atau menghapus saluran alfa jika gambar menggunakan format yang mendukungnya, (tahan Alt untuk bertukar antara menghapus dan anti-menghapus).

Untuk Krita, Anda dapat melakukan ini: Layer > Split Alpha > Alpha into Mask. Setelah melakukan itu, Anda dapat menyembunyikan atau menghapus saluran Transparency Mask 1 yang baru saja dibuat dan Anda akan melihat gambar lengkap.

Karena latar belakang Windows tidak dapat memiliki apa pun di belakangnya, itu mungkin hanya menghilangkan transparansi dan menampilkan gambar tanpa itu, (gambar 32 bit cepat dan kotor menjadi 24 bit dari tampilannya).

Blerg
sumber
3

Satu hal klarifikasi: Ini bukan bug, itu adalah perilaku yang ditentukan dalam spesifikasi png. Secara spesifik spesifikasi menyatakan bahwa jika penampil atau konverter tidak dapat memahami transparansi atau transparansi tidak sesuai untuk suatu konteks atau penggunaan saluran alfa dapat diabaikan. Lebih lanjut spesifikasi meminta semua pembuat gambar untuk mengatur warna transparan sehingga gambar berguna jika saluran alfa diabaikan. (Parafrase saya, saya sudah beberapa tahun sejak saya membaca spec.)

Hildred
sumber
1
Bisakah Anda mencoba dan menemukan bagian yang relevan dari spesifikasi? Karena saya tidak dapat menemukan ini di w3.org/TR/PNG . Terima kasih!
MarnixKlooster ReinstateMonica