Saya mengalami masalah dengan cara Photoshop menangani piksel yang sepenuhnya transparan saat mengekspor sebagai PNG, yaitu saluran warna merah, hijau, dan biru dari setiap piksel yang sepenuhnya transparan disimpan sebagai 0 alih-alih warna yang saya tetapkan di Photoshop .
Sebagai contoh: Saya punya file PSD dengan layer mask. Beberapa bagian berwarna dari gambar dibuat sepenuhnya transparan oleh layer mask, tetapi saya masih ingin saluran warna asli ditulis ke file PNG, bukan hanya 0.
(Ya, format PNG itu sendiri tidak berisi data RGB bahkan untuk piksel sepenuhnya transparan. Ini adalah masalah dengan Photoshop, tidak PNG.)
Jika Anda bertanya-tanya mengapa data warna penting ketika sebuah piksel benar-benar transparan, maka berikut adalah beberapa kasus penggunaan:
- PNG disampel pada resolusi yang lebih tinggi daripada yang disimpan karena nilai-nilai sampel diinterpolasi di antara piksel tetangga. Ini dapat menghasilkan "lingkaran hitam" pudar di sekitar gambar jika interpolasi tidak tertimbang oleh transparansi. (Dalam kasus saya, pengambilan sampel ini sedang dilakukan pada GPU, yang karena alasan kinerja tidak mempertimbangkan transparansi.)
- Saluran merah, hijau, biru, dan alfa dalam file PNG digunakan untuk tujuan selain menyimpan informasi warna. (Dalam kasus saya, saya menggunakan keempat saluran untuk menyimpan data yang dibutuhkan untuk perhitungan pencahayaan waktu nyata.)
Terima kasih atas bantuan Anda!
EDIT
Saya akan mencoba menjelaskan masalah yang saya alami dengan menggunakan beberapa alat bantu visual. Menunjukkan hal-hal yang transparan itu sulit, tetapi mudah-mudahan ini membuat masalah saya lebih jelas:
Saya punya file PSD dengan satu layer dan layer mask. Lapisan warna terlihat seperti ini:
Layer mask-nya terlihat seperti ini:
Jika saya mengekspor file PSD ini sebagai PNG, saya mendapatkan ini:
(Daerah putih memang transparan; mereka hanya terlihat putih dengan latar belakang putih.)
Anda mungkin bertanya-tanya: Apa masalahnya? Itu terlihat benar! Nah, masalahnya adalah dengan informasi warna yang disimpan dalam piksel transparan tersebut. Menggunakan alat untuk menghapus data opacity dari PNG sambil membiarkan RGB tetap utuh, kita bisa melihat informasi warna yang disimpan Photoshop ke piksel transparan:
Seperti yang Anda lihat, Photoshop telah mengganti informasi warna dalam piksel transparan dengan hitam. Sedangkan, dengan data opacity dihapus dari PNG, saya ingin itu terlihat persis seperti lapisan warna asli: