Der Entwickler von Monaco hat tatsächlich einen hervorragenden Artikel darüber verfasst, wie sowohl sie als auch Spore dies erreicht haben.
Die grundlegende Zusammenfassung ihrer Tätigkeit ist recht einfach:
- Konvertieren Sie Ihre Daten in Binärdateien
- Konvertieren Sie Ihr Zielbild in eine rohe Bitmap
- Gehen Sie entlang der Pixel des Bildes in einem vorhersehbaren Muster (von links oben nach rechts).
- Schreiben Sie ein Bit in das Bit niedrigster Ordnung jedes Farbkanals jedes Pixels
- Exportieren Sie die geänderte Bitmap erneut nach png
Tun Sie dies einfach in umgekehrter Reihenfolge, um Ihre Daten abzurufen.
Die Grundidee hinter dem Prozess ist, dass ein Bild viele Pixel enthält und die niedrigstwertigen Bits jedes Farbkanals keinen großen Unterschied machen. Darüber hinaus entspricht etwa die Hälfte der Bits, die Sie schreiben, dem Bit im Bild, das bereits vorhanden war. Was Sie zurückerhalten, ist im Wesentlichen das richtige Bild, aber mit seltsamen Artefakten. Er nimmt sich die Zeit zu bemerken, dass diese Artefakte nur dann wirklich auffallen, wenn Sie den Kontrast / die Sättigung wirklich ankurbeln und hineinzoomen. Er hat jedoch Quellbilder mit viel Anfangsrauschen.
Aus dem Artikel:
Beachten Sie im letzten Bild, dass das Rauschen eine kaum wahrnehmbare horizontale Linie aufweist. Das ist das Ende der Leveldaten. Das bedeutet, dass ich tatsächlich alle Level-Daten in ein 265 x 120 Pixel großes Bild einpassen kann, nur mit dem niedrigstwertigen Bit.
Ein kniffliges Addendum:
Etwas, das ich tun könnte, und ich glaube, dass es auch die Sporen getan haben, ist tatsächlich, ALLE Farbbits in Pixeln zu verwenden, die 100% transparent sind. Da diese Pixel transparent sind, spielt es keine Rolle, auf welche Farbe Sie sie einstellen.
Ich kann dies jedoch nicht tun, da ich das gesamte Bild verwende, was bedeutet, dass ich keine transparenten Pixel zum Arbeiten habe.
Warum sollte diese Technik der Speicherung in den Metadaten vorgezogen werden?
- Es ist lustig! :)
- Dienste können Metadaten entstellen (möglicherweise als Datenschutz- / Sicherheitsmerkmal), sollten jedoch die Pixel Ihres PNG nicht entstellen, es sei denn, sie stellen aggressive Anforderungen an das Hosting von Bildern (wenn Sie sich umsehen, Facebook). Aber wenn sie vollständig Ihr Bild wieder zu exportieren gibt es nichts , was man zuverlässig kann tun.
Zusätzliches Guthaben: Um die Wahrnehmbarkeit von Rauschen zu verringern, können Sie die zu ändernden Pixel mit einem PRNG mit festem Startwert auswählen. Sie können auch nur einige der Farbkanäle auf ähnliche Weise ändern.