Sıradan bir görseldeki her piksel üç sayıyla tanımlanır: ne kadar kırmızı, yeşil ve mavi içerdiği. Bu, pikselin hangi renkte olduğunu söylemeye yeter ama içinden görüp göremeyeceğinizi söylemez. Alfa kanalı tam olarak bunu yapan, piksel başına dördüncü bir sayıdır: tamamen şeffaftan tamamen opağa kadar opaklığı saklar.
İnsanlar "şeffaf arka planlı bir PNG" dediğinde, arka plan piksellerinin alfa değeri sıfır olan, alfa kanallı bir görseli kastederler. Bu rehber, bu sayının nasıl çalıştığını, yazılımların onu saklamasının iki yolunu, kenarların neden bozulduğunu ve bir dosyanın gerçekte ne içerdiğini nasıl kontrol edeceğinizi anlatır.
RGBA: piksel başına dört kanal
MDN alfa kanalını basitçe tanımlar: renkler kanallardan oluşur (kırmızı, yeşil ve mavi) ve "arka planın bir ölçüde görülebildiği" bir rengi tanımlamak için dördüncü bir kanal eklenir. Dört kanalın hepsine sahip bir görsele RGBA denir.
Değer birkaç farklı şekilde yazılabilir ve hepsi aynı anlama gelir:
| Gösterim | Tamamen şeffaf | Yarı şeffaf | Tamamen opak |
|---|---|---|---|
| 8 bit tamsayı (çoğu görsel dosyası) | 0 | 128 | 255 |
| 16 bit tamsayı (16 bit PNG) | 0 | 32768 | 65535 |
| Kesir (birleştirme hesabı, CSS) | 0 | 0.5 | 1 |
| Yüzde (CSS) | 0% | 50% | 100% |
Hex soneki (CSS #rrggbbaa) | 00 | 80 | ff |
PNG spesifikasyonu bunu kesin bir dille ifade eder: sıfır alfa değeri tam şeffaflıktır, bit derinliği için maksimum değer tam opaklıktır ve aradaki değerler "bir arka plan görseliyle birleştirilebilen" kısmen şeffaf piksellerdir.
Önemli olan kısım bu ara değerlerdir. İyi bir kesim yalnızca "konu opak, arka plan şeffaf" değildir. Kenar boyunca, özellikle saç, tüy, kumaş, cam ve hareket bulanıklığındaki pikseller kısmen şeffaftır; konunun makasla kesilmiş gibi değil, yeni bir arka plan üzerinde doğal görünmesini sağlayan budur.
Şeffaf bir piksel nasıl çizilir
Bir uygulama görselinizi başka bir şeyin üzerine yerleştirdiğinde, her pikseli arkasındakiyle harmanlar. W3C Compositing and Blending spesifikasyonu temel formülü verir:
result = Cs x as + Cb x ab x (1 - as)
Cs, as = color and alpha of your image (the source)
Cb, ab = color and alpha of what is behind it (the backdrop)Opak bir arka planın olduğu yaygın durumda bu, ağırlıklı bir ortalamaya dönüşür. Alfa değeri 0.3 olan bir piksel kendi renginin %30'unu katar ve arka planın %70'inin görünmesine izin verir.
Düz ve önceden çarpılmış alfa
Kısmen şeffaf bir pikselin rengini saklamanın iki yolu vardır ve bunları karıştırmak, koyu veya parlak saçakların klasik bir nedenidir.
Düz alfa (ilişkisiz veya önceden çarpılmamış alfa da denir), rengi piksel tamamen opakmış gibi saklar ve opaklığı ayrı tutar. Yarı şeffaf saf kırmızı bir piksel kırmızı 255, yeşil 0, mavi 0, alfa 128 olarak saklanır.
Önceden çarpılmış alfa (ilişkili alfa da denir), rengi alfa ile çarpılmış olarak saklar. Aynı piksel kırmızı 128, yeşil 0, mavi 0, alfa 128 olarak saklanır. PNG spesifikasyonunun ifadesiyle, böyle bir görsel "zaten siyah bir arka plana karşı birleştirilmiştir".
Bir dosyanın hangisini kullandığı formata ve yazılıma bağlıdır:
- PNG her zaman düz alfa kullanır. Spesifikasyon bunu açıkça söyler ve bunun bir düzenleyicinin görselin şeffaflığını kolayca değiştirmesine olanak tanıdığını belirtir.
- Grafik hatları, oyun motorları ve video birleştirme araçları, harmanlama hesabı daha basit olduğu ve filtreleme daha iyi davrandığı için genellikle içeride önceden çarpılmış alfa ile çalışır.
Sorunlar, bir program önceden çarpılmış değerler yazıp diğeri bunları düz olarak okuduğunda başlar. Kenarlardaki renkler fazla koyu çıkar ve ince siyah bir dış hat oluşur. Ters yönde ise kenarlar fazla parlak olur. Bir araçtan çıkan her kesimde tutarlı koyu bir kenar görüyorsanız, ilk şüphelenmeniz gereken şey bir önceden çarpma uyumsuzluğudur.
Kesimlerde neden hale oluşur
Hale, konunun etrafında ona ait olmayan görünür bir kenardır. Dört yaygın nedeni vardır ve her birinin kendi çözümü bulunur.
1. Eski arka plan kenar piksellerine işlenmiştir
Bir kamera hiçbir zaman temiz bir sınır yakalamaz. Yeşil bir çitin önündeki bir saç teli, kısmen saç kısmen çit olan pikseller üretir. Kesim bu piksellerin orijinal renklerini koruyup onları yalnızca yarı şeffaf yaparsa, yeşil karışık kalır. Beyaz üzerine yerleştirildiğinde konunun etrafında hafif yeşil bir parıltı oluşur.
Çözüm renk arındırmadır: her kenar pikseli için gerçek ön plan rengini tahmin edip onun yerine bunu yazmak. Photoshop buna Select and Mask çalışma alanında Decontaminate Colors der; açık kaynaklı rembg kütüphanesinde de aynı işi yapan bir decontaminate seçeneği vardır. Bu işlem kenar renklerini değiştirir, maskenin şeklini asla değiştirmez.
2. Maske fazla sert
Maskede yalnızca tamamen opak ve tamamen şeffaf pikseller varsa kenarlar tırtıklı görünür ve orijinal fotoğraftaki kenar yumuşatma, konunun etrafında bir piksellik arka plan rengi çizgisi bırakır. Saç gibi yumuşak konular, gerçek ara değerlere sahip yumuşak bir maske gerektirir.
3. Şeffaf piksellerdeki gizli renkler
Düz alfalı bir dosyada alfa değeri sıfır olan bir pikselin de kırmızı, yeşil ve mavi değerleri vardır. Bunları göremezsiniz, ancak bir görseli yeniden boyutlandırmak veya bulanıklaştırmak komşu pikselleri karıştırır ve bu gizli renkler beyaz veya siyahsa görünür kenara sızarlar. İyi görsel kütüphaneleri bundan, yeniden boyutlandırmadan önce önceden çarpıp sonra geri dönüştürerek kaçınır.
4. Görsel bir renk üzerine düzleştirilmiştir
GIF'ler ve paletli PNG'ler çoğu zaman yalnızca açık ya da kapalı şeffaflığı destekler; bu yüzden araçlar kaydetmeden önce kenarı genellikle beyaz olan bir mat renge karşı yumuşatır. Böyle bir görsel beyaz üzerinde iyi görünür, daha koyu her şeyin üzerinde beyaz bir saçak gösterir. Kesiminiz koyu arka planlar üzerinde duracaksa, onu tam alfa ile dışa aktarın.
Maskeler, matlar ve alfa: terimler
Bu kelimeler birbiriyle örtüşür ve gevşek kullanılır. Genellikle şu anlamlara gelirler:
- Alfa kanalı: bir görsel dosyasının içinde saklanan, piksel başına bir opaklık değeri.
- Maske: başka bir görselin hangi kısımlarının görünür olduğunu kontrol eden gri tonlamalı bir görsel. Photoshop'un katman maskelerinde beyaz gösterir, siyah gizler, griler kısmen görünür. Bir maske orijinal piksellere dokunmadan düzenlenebilir; profesyonellerin arka planı silgiyle değil maskeyle kaldırmasının nedeni budur.
- Mat: aynı fikir için film ve birleştirme terimi; neyin tutulacağını belirleyen gri tonlamalı bir görsel. "Matlama", saç gibi zor kenarlar için yumuşak ve doğru matlar hesaplama problemidir.
- Trimap: bazı matlama algoritmalarının başlangıç noktası olarak kullandığı, üç bölgeli kaba bir harita (kesinlikle ön plan, kesinlikle arka plan, emin değil).
- İkili veya sert maske: yalnızca siyah ve beyaz, gri yok. Kutular ve logolar için yeterli, saç için zayıf.
- Kesim: bitmiş sonuç, konunun renkleri artı bir alfa kanalı.
Maske ve alfa kanalı aynı bilgiyi taşır. Birçok araç ikisinden birini dışa aktarmanıza izin verir: alfası içinde olan şeffaf bir PNG ya da bir düzenleyicide veya video aracında kendiniz uygulayabileceğiniz ayrı bir siyah beyaz maske görseli.
Hangi formatlar alfa saklayabilir
| Format | Alfa desteği |
|---|---|
| PNG | Tam alfa (8 veya 16 bit) ya da tek bir şeffaf palet rengi |
| WebP | Hem kayıpsız hem kayıplı modda tam alfa |
| AVIF | Tam alfa |
| GIF | Yalnızca açık veya kapalı: şeffaf olarak işaretlenmiş tek bir palet rengi |
| JPEG | Yok |
Bu formatların tam karşılaştırması için PNG, JPEG ve WebP rehberine bakın.
Bir görselde şeffaflık olup olmadığını nasıl kontrol edersiniz
.png ile biten bir dosya şeffaflığın kanıtı değildir. Birçok PNG tamamen opaktır ve internette bulunan bazı "şeffaf" görseller, piksellerine gri beyaz bir dama deseni çizilmiş JPEG'lerdir. İşte güvenilir kontrol yolları.
Gözle
Görseli, örneğin bir sunumda veya tasarım aracında, koyu bir arka plana ve açık bir arka plana yerleştirin. Gerçek bir kesim, her iki durumda da konunun etrafında arka plan rengini gösterir. Hâlâ dama deseni görüyorsanız, bu şeffaflık değil, resmin bir parçasıdır.
ImageMagick ile
# Does the file have an alpha channel at all?
identify -format "%A\n" photo.png
# Is it fully opaque anyway? (true means no visible transparency)
identify -format "%[opaque]\n" photo.png%A şeffaflık kanalını bildirir (yazdırılan kelime ImageMagick 6 ile 7 arasında farklıdır), %[opaque] ise her pikselin tamamen opak olup olmadığını hesaplar. İstediğiniz sonuç, bir alfa kanalı ve false değeridir.
Python ve Pillow ile
from PIL import Image
im = Image.open("photo.png")
print(im.mode) # RGBA or LA means an alpha channel
print(im.has_transparency_data) # True if the file carries any transparency info
if "A" in im.getbands():
lo, hi = im.getchannel("A").getextrema()
print("alpha range:", lo, hi) # lo == 255 means nothing is transparentEkstremum kontrolü, her pikselin opak olduğu RGBA dosyası gibi yaygın bir durumu yakalar.
Platform alfayı yok saydığında
Bazı yerler şeffaflığı kaldırır veya yok sayar. Etsy şeffaf PNG'lerin desteklenmediğini ve şeffaf alanların siyah görünebileceğini söyler; Amazon ve Walmart gibi pazar yerleri de zaten ana görselleri saf beyaz üzerinde ister. Bu durumlarda sonucu kontrol edebilmek için kesimi arka plan rengi üzerine kendiniz düzleştirin. Kendi web sitenizde, sunumlarda ve tasarım araçlarında alfayı koruyun.
Hızlıca temiz bir alfa kanalı elde etmek
Sert maskeler yerine yumuşak kenarlı kesimlere ihtiyacınız varsa, removebackground.dev tam alfa kanallı şeffaf PNG veya WebP dosyaları üretir; API'si de gri tonlamalı maskeyi tek başına döndürebilir.
Sorular
RGBA ne anlama gelir?
Kırmızı (red), yeşil (green), mavi (blue) ve alfa. İlk üçü bir pikselin rengini, dördüncüsü ise opaklığını tanımlar: 0 tamamen şeffaf, maksimum değer (8 bit görsellerde 255) tamamen opaktır.
Düz ve önceden çarpılmış alfa arasındaki fark nedir?
Düz alfa, bir pikselin tam rengini ve opaklığını ayrı ayrı saklar. Önceden çarpılmış alfa ise rengi, siyah üzerine birleştirilmiş gibi opaklıkla çarpılmış olarak saklar. PNG her zaman düz alfa kullanır; birçok işleme ve video aracı içeride önceden çarpılmış alfa kullanır.
Kesimimde neden beyaz veya renkli bir dış hat var?
Genellikle eski arka plan hâlâ kenar piksellerine karışmıştır ya da görsel kaydedilmeden önce beyaza karşı yumuşatılmıştır. Kenar renklerini arındırmak, yumuşak bir maske kullanmak ve mat renk yerine tam alfa ile dışa aktarmak çoğu durumu çözer.
Maske ile alfa kanalı aynı şey mi?
Aynı bilgiyi taşırlar: her piksel için ne kadar görünür olduğunu söyleyen bir gri ton değeri. Alfa kanalı görsel dosyasının içinde saklanır; maske ise genellikle ayrı bir gri tonlamalı görsel veya bir düzenleyicideki katman maskesidir.
Bir PNG'nin gerçekten şeffaf olup olmadığını nasıl anlarım?
Onu koyu ve açık bir arka plana yerleştirin ve arka planın göründüğünü kontrol edin. Ya da ImageMagick'in identify komutunu %[opaque] ile çalıştırın veya Pillow'da alfa kanalının minimum değerine bakın; minimum 255 ise hiçbir yer şeffaf değildir.
Kendi görselinizde deneyin
Yeni hesaplara 50 ücretsiz kredi verilir. Görsel başına bir kredi, abonelik yok ve kredilerin süresi hiç dolmaz.
Arka plan kaldırınKaynaklar
- MDN: Alpha (alpha channel) glossary entry
- W3C: Portable Network Graphics (PNG) Specification (Third Edition)
- W3C: Compositing and Blending Level 1, simple alpha compositing
- MDN: Image file type and format guide
- Adobe Help: Select and Mask in Photoshop
- Adobe: Remove background with AI in Photoshop (layer masks)
- rembg README: color decontamination and edge modes
- ImageMagick: Format and print image properties (escapes)
- Pillow: Image module reference
- Etsy Help: Requirements and best practices for images in your Etsy shop