Buna tam olarak bir hata diyemedim zira değil. C++ ile yazdığınız bir programın içerisinde görsel içeren ki saydam piksel sahibi olabildiği için "png" uzantılı görselleri kastediyorum, bir kısım var ise, bu hatayı alıyor olma ihtimaliniz var. Özellikle "libpng" kütüphanesinin son sürümünden sonra. Çünkü bunu yapan abiler yeni sürümde, resim dosyasını tekil manada oluşturan parçaların sıkıştırılmasındaki ya da ifade edilmesindeki sorunları tespit edebilmeyi güçlendirmişler. Açıkçası ben bunu kendi karşılaştığım bir şey olduğu için yazıyorum, zira sinir olmuştum, konsolda sürekli her görsel için uyarı satırı gözüküyordu, nesneler hareket ettikçe tekrar oluştukları için gözükmeye devam ediyorlardı. Bunu düzeltmeden ve sallamadan giderseniz pek sorun olacağını düşünmüyorum ancak kurtulmak da çok zor değil.
Bunun için ImageMagicK yı kullanabilirsiniz, Unix içerisinde terminal üstünde aşağıdaki kodlarla bu dönüşümü yapabiliyorsunuz, ikinci satır dosya içindeki her görsele bu işlemi uygulamak için:
convert bozuk.png sorunyok.png
find . -type f -name "*.png" -exec convert {} -strip {} \;
Ayrıca pngcrush ile hangi dosyalarda sıkıntı olduğuna bakabilir, bulduklarınızı aşağıdaki şekilde düzeltebilirsiniz. İlk satırdaki "-n" üstüne yazmamak için, ikinci satırdaki "-ow" de üstüne yazması için. "-q" uyarı dışındaki hataları susturur ama ikinci satırdaki "-rem allb" tRNS ve gAMA dışındaki profilleri siler, "-reduce" da çevirmeyi yapar:
pngcrush -n -q *.png
pngcrush -ow -rem allb -reduce bozuk.png
Bir de şöyle pngcheck var kullanımı aynı olan:
find . -type f -name "*.png" -exec pngcheck {} \;
Bu hatanın birebir türkçesi "libpng uyarısı: International Color Consortium Profile: bilinen yanlış sRedGreenBlue profili" şeklindedir. Buradan renk profillerine dair bir temizleme gerektiğini çıkartabilirsiniz. Yani bu işlemi yapmanız çok da bir şey kaybettirmez ama bazen ImageMagicK ve Photoshop arasında profil sorunu yaratan görseller oluşabiliyormuş. Tabii ki bunları yapmak yerine, tek derdiniz hatayı görmemek ise, libpng kütüphanesinin eski bir sürümüne geçebilirsiniz, mesela 1.5. ImageMagick nın Windows versiyonu da varmış ama bu işlem için düz halinin yeterli olduğunu sanmıyorum.
Bir de windows için şu adresten optipng yi indirin, ardından alttaki satırı ya da sitede dökümanlardaki örnekleri kullanarak resimlerini daha sevilesi formata getirebilirsiniz:
optipng -clobber -strip all resim.png