PDFMove
PNG'yi GIF'e Çevirince Renkler Neden Bozuluyor?
Rehber

PNG'yi GIF'e Çevirince Renkler Neden Bozuluyor?

4 dk okuma

Sorunun kaynağı tek bir sayıda

PNG'den GIF'e çevirdiğiniz bir görselde renklerin bozulmasının tek bir temel sebebi var: GIF formatı kare başına en fazla 256 renk saklayabilir.

Bu ifadeyi hafife almamak gerekiyor. Bu bir kalite ayarı değil, bir varsayılan tercih değil, yazılımın seçtiği bir kısayol değil. GIF dosyasının yapısında her kare için bir renk tablosu bulunur ve bu tablo en fazla 256 girdi içerebilir. Görselinizdeki her piksel, bu tablodaki 256 renkten birine atanmak zorundadır. Hiçbir araç, hiçbir ayar bu sınırı aşamaz.

PNG ise tam tersi bir felsefeyle tasarlandı. Kayıpsız bir formattır, milyonlarca rengi saklayabilir ve üstüne her piksel için ayrı bir saydamlık değeri tutar. Yani PNG'den GIF'e geçmek, geniş bir kaptan çok daha dar bir kaba geçmektir. Sığmayan şeyler dökülür.

Bantlaşma: yumuşak geçişlerin basamağa dönüşmesi

Bir gökyüzü fotoğrafını veya degrade bir arka planı düşünün. PNG'de bu geçiş yüzlerce, belki binlerce ara tondan oluşur ve göz bunu kesintisiz algılar.

GIF'e dönüşürken yazılım şu işi yapmak zorunda kalır: bu binlerce tonu, palette yer alacak birkaç renge indirmek. Sonuç, kesintisiz geçişin yerini alan görünür basamaklardır. Buna bantlaşma denir. Özellikle geniş ve yavaş değişen alanlarda — gökyüzü, düz renkli arka plan degradeleri, yumuşak gölgeler — gözle net biçimde fark edilir.

Bantlaşma bir hata değil, matematiksel bir zorunluluktur. 500 farklı tonu 8 renge indirirseniz aradaki farklar kaybolur.

Dithering: hasarı gizleme çabası

Yazılımlar bantlaşmayı olduğu gibi bırakmak yerine genellikle dithering uygular. Türkçesi kabaca nokta serpmedir.

Mantığı şudur: iki komşu renk arasında bir ara ton yoksa, o iki rengi küçük noktalar halinde birbirine karıştırarak gözde ara ton yanılsaması yaratılır. Uzaktan bakıldığında geçiş gerçekten daha yumuşak görünür. Yakından bakıldığında ise kum serpilmiş gibi bir doku fark edersiniz.

Bu bir takas: bantlaşmayı azaltırsınız ama görüntüye desen eklersiniz. Dithering'i kapatan araçlarda çıktı daha temiz ama bantlaşma daha sert olur. Hangisinin daha iyi göründüğü içeriğe bağlıdır — düz renkli grafiklerde dithering'siz, fotoğrafik içerikte dithering'li sonuç genellikle daha kabul edilebilir.

Dithering'in ikinci bir bedeli daha var: dosya boyutunu artırır. Düzensiz nokta deseni sıkıştırılması zor bir yapıdır ve GIF'in sıkıştırma verimini düşürür.

Tırtıklı kenarlar: ikili şeffaflığın bedeli

Renk kaybı hikayenin yarısı. Diğer yarısı şeffaflık.

PNG'nin alfa kanalı her piksel için 256 farklı saydamlık seviyesi saklar. Bu sayede bir logonun eğimli kenarı, tamamen opak ile tamamen saydam arasında kademeli piksellerden oluşur ve arka plana pürüzsüz karışır. Yumuşak gölgeler, cam efektleri, hafif solmalar hep bu kanal sayesinde çalışır.

GIF ise yalnızca ikili şeffaflık destekler. Bir piksel ya tamamen saydamdır ya tamamen opaktır. Arada hiçbir değer yoktur.

Dönüşüm sırasında PNG'nin yarı saydam pikselleri bu iki uçtan birine yuvarlanmak zorunda kalır. Sonuç: pürüzsüz kenar merdiven basamağı gibi tırtıklanır. Yumuşak gölgeler ya tamamen kaybolur ya sert bir kütle olarak kalır. Bu, özellikle logolarda ve ikonlarda göze batan bir bozulmadır.

Bazı araçlar yarı saydam pikselleri belirli bir arka plan rengiyle harmanlar. Bu, o arka plan üzerinde iyi görünen ama farklı bir zemine konduğunda etrafında hale bırakan bir sonuç üretir.

O halde bu dönüşümü ne zaman yapmalı?

Açık konuşmak gerekirse: PNG'den GIF'e geçiş renk sadakati açısından bir düşüştür. Yumuşak alfa kenarları tırtıklı ikili kenarlara döner, renkler 256'ya indirgenir. Bu dönüşümü yalnızca iki gerçek sebeple yapmalısınız.

Birincisi animasyon. PNG animasyon saklayamaz. Bir dizi kareyi hareketli tek bir dosyada birleştirmeniz gerekiyorsa ve hedef ortam GIF bekliyorsa, bu dönüşüm zorunludur.

İkincisi uyumluluk. Bazı forum yazılımları, e-posta istemcileri, mesajlaşma uygulamaları, eski içerik yönetim sistemleri ve kurumsal platformlar yalnızca GIF kabul eder veya sadece GIF'i otomatik oynatır. Bu durumda tercih değil zorunluluk vardır.

Bu iki sebep yoksa PNG'yi PNG olarak bırakın. "GIF daha yaygın bir format" düşüncesiyle yapılan dönüşüm sadece kalite kaybettirir.

Kaybı azaltmanın pratik yolları

Kaynağı sadeleştirin. Degrade arka planı düz renge çevirmek bantlaşmayı neredeyse tamamen ortadan kaldırır. Gereksiz gölge ve parlama efektlerini kaldırın.

Renk sayısını baştan azaltın. Zaten 256'ya inecekse, kaynak görselinizi az renkli tutmak dönüşümün karar vermek zorunda kaldığı miktarı düşürür ve sonuç daha temiz olur.

Şeffaflık yerine düz zemin kullanın. Görselin nerede kullanılacağını biliyorsanız, PNG'yi o arka plan rengiyle düzleştirip GIF'e çevirmek tırtıklı kenar sorununu tamamen ortadan kaldırır.

Çözünürlüğü düşünün. Küçük gösterilecek bir görselde bantlaşma ve dithering çok daha az fark edilir.

Kaynak PNG'leri saklayın. GIF'ten geri dönüş yoktur. Atılan renkler ve yumuşak kenarlar hiçbir dönüşümle geri gelmez.

Özetle

PNG'den GIF'e geçişte renklerin bozulması bir araç hatası değil, formatın 256 renk sınırının kaçınılmaz sonucudur. Bantlaşma bu indirgemeden, nokta deseni ise onu gizleme çabasından doğar. Tırtıklı kenarlar ise GIF'in yalnızca ikili şeffaflık desteklemesinden kaynaklanır. Bu dönüşümü animasyon gerektiği veya karşı taraf GIF dayattığı için yapın; başka bir sebep varsa PNG'de kalmak her açıdan daha iyi sonuç verir.

Sıkça Sorulan Sorular

256 renk sınırı tam olarak ne anlama geliyor?

GIF formatı her kare için bir renk tablosu saklar ve bu tablo en fazla 256 girdi içerebilir. Yani görselinizdeki tüm pikseller, bu 256 renkten birine atanmak zorundadır. Bu formatın esnek bir varsayılan ayarı değil, dosya yapısına gömülü kesin bir sınırdır ve hiçbir yazılım bu sınırı aşamaz. PNG milyonlarca rengi saklayabildiği için dönüşüm neredeyse her zaman bir indirgeme işlemidir.

Kum gibi görünen nokta deseni nedir?

Buna dithering yani nokta serpme denir ve bir hata değil, kasıtlı bir maskeleme tekniğidir. Renk paleti 256'ya indirildiğinde iki ton arasındaki geçiş sert bir basamağa dönüşür; yazılım bunu gizlemek için iki rengi küçük noktalar halinde serperek gözde ara ton yanılsaması yaratır. Uzaktan bakıldığında geçiş daha yumuşak görünür, yakından bakıldığında kum gibi bir doku fark edilir. Dithering'i kapatmak deseni yok eder ama bu sefer bantlaşma daha belirgin hale gelir.

PNG'nin şeffaf kenarları GIF'te neden tırtıklı oluyor?

PNG alfa kanalı sayesinde her piksel için 256 farklı saydamlık seviyesi saklayabilir; bu yüzden bir logonun eğimli kenarları arka plana yumuşak biçimde karışır. GIF ise yalnızca ikili şeffaflık destekler: bir piksel ya tamamen saydamdır ya tamamen opaktır, arada değer yoktur. Dönüşümde yarı saydam piksellerin her biri bu iki uçtan birine yuvarlanır ve yumuşak geçiş sert bir sınıra dönüşür. Sonuç merdiven basamağı gibi tırtıklı bir kenardır.

Renk kaybını azaltmanın bir yolu var mı?

Tamamen önleyemezsiniz ama etkisini azaltabilirsiniz. Kaynak görselinizi sade tutmak en etkili yöntemdir; degrade arka planı düz renge çevirmek, gereksiz gölge ve parlama efektlerini kaldırmak bantlaşmayı büyük ölçüde ortadan kaldırır. Ayrıca görselinizdeki baskın renkleri koruyacak bir palet seçimi yapılmasına izin veren araçlar daha iyi sonuç verir. Şeffaflık söz konusuysa kenarları GIF'te kullanacağınız arka plan rengiyle uyumlu hale getirmek tırtıklanmayı görünmez kılar.

Bu konuyu PNG → GIF Dönüştür aracıyla hemen deneyin.

PNG → GIF Dönüştür aracını dene