PNG formatı daha çok ya da daha az keyfi meta veri desteği vardır. PNG standardında bir PNG dosyası, gerekli (ve resim verileri içeren) bazıları topakları, esas olarak, bir dizi tanımlar. Ancak diğerleri isteğe bağlıdır. Örneğin, gama bilgilerini veya histogram verilerini depolamak için bir yığın var.
Özellikle, isteğe bağlı anahtar / değer metin çiftlerini depolamak için kullanılabilecek bir tEXt
yığın var. Bu, istediğiniz veriyi metin olarak gösterebilmeniz koşuluyla (oldukça muhtemel), istediğiniz herhangi bir keyfi veriyi göndermek için kullanılabilir.
Bu ek parçalara ( referans kitaplığı gibi ) erişmenize ve bunları kullanmanıza izin veren bir PNG kitaplığına ihtiyacınız olacak veya kendiniz yazmanız gerekecektir. Öyleyse, istediğiniz verilerin anahtar / değer çiftleri olarak nasıl kodlanacağının seçilmesi meselesidir. Aşağıdakileri öneririm:
- kaba bir "ad alanı" sistemi oluşturmanın bir yolu olarak projenizin adı veya kod adı ile önceden belirlenmiş anahtar adları seçin ve diğer uygulamaların verileri kullanmasıyla olası çakışmalardan kaçının
- depolamak kalkmayın gerçek oyununuzun kendi varlık veritabanı içinde işaret bu dokular dokular bu şekilde, mağaza referansları
- Yaratık veya nesne büyüklüğü, ağırlık, vb. - basit skalarlar gibi temel bilgiler - temel olarak saklanabilir
Daha eksiksiz bir cevap vermek için ayrıca, daha önce başka bir yaklaşımın olduğuna dikkat çekeceğim (daha önce @Vaughn ve @ Alexis'in cevaplarıyla belgelenmiştir): İstediğiniz ek veriyi doğrudan görüntü piksellerinize dağıtıp verilerinizi dağıtarak renk kanallarının düşük sıra bitleri. Bu yaklaşım, fazladan meta veri kullanılmasını gerektirmez; bu, tamamen buna güvenmeden veya bu meta verileri yanlış kullanan harici programlar hakkında endişelenmeden uygulayabileceğiniz anlamına gelir. Aynı zamanda çok yüksek bir "harika" faktörü var ve sadece düşük dereceli bit kullandığınız için görüntü insan gözüne hala düzgün gözüküyor. Bununla birlikte, görüntü boyutunuzun saklayabileceğiniz veri miktarı için birincil kontrol faktörü olduğu anlamına gelir; daha fazla depolama alanına ihtiyacınız varsa, görüntüye daha fazla piksel ayırmanız gerekir.
Diğerlerinin de belirttiği gibi, bu süreç steganografi olarak bilinir .