Verständnis Bild (seine hex-Werte)
Ich versuche zu verstehen, die hex-Werte von 10 x 10 pixel png-Bild-Datei.
Beispiel: ich bin mit diesem Bild http://www.sweethome3d.com/blog/common/images/feed-icon-10x10.png?. Ich öffnete es in Sublime Text 2 und sah folgende Werte
8950 4e47 0d0a 1a0a 0000 000d 4948 4452
0000 000a 0000 000a 0806 0000 008d 32cf
bd00 0000 0467 414d 4100 00af c837 058a
e900 0000 1974 4558 7453 6f66 7477 6172
6500 4164 6f62 6520 496d 6167 6552 6561
6479 71c9 653c 0000 0167 4944 4154 78da
2c90 3b48 1c51 1885 bf7b 6766 5d7c 63a1
ae5a 180b 9140 086a 213e 106c 042b c1c6
5641 49bb 8d8d 76a6 491b d248 40d2 2888
a585 2058 a960 a168 a128 be90 557c e26b
d575 7667 e6de 9b99 5d8b c3df 7cff 3987
23ce 26be 8dc4 9dd8 3fa7 c8c1 7244 2889
0caf b40b 0a7c c5f3 7d66 545c 4db6 1bbb
ac9a 928e 41cc c331 3ab5 8e15 fb7c 0841
6109 dc77 b023 27bb a29c f8d7 3eac 9a1f
98dc 1bc1 f62c e660 310f a99c 469a 9089
e2c4 c72d eeca 34d2 bda5 a873 1ca7 3b89
ae6e c65b fd89 9751 686d 45a0 c46e 68a1
6478 06f3 7683 dafc 8d7a 39c5 ea9d c29c
6ee3 6f2d 6144 e81a 15e7 6e97 dcdc 10e6
e904 bbff 172a f38a b7b3 10ba 8f11 b8aa
101f 15b6 abea 717a 9298 9365 f4f9 1a76
5792 8f8d 7964 651d b2ae 0de5 9b02 282b
13c8 c65e 681a c05d ff8b ac48 1064 35ea
e91a e74b 7b1e 14af 7fba 4dbc d8a0 abbe
e35d 1ee1 3da7 11b5 ad64 cf0f a134 819f
4e63 b20f c868 cc68 273f b58f 7273 61f1
18fe c51e 681f f598 ca43 ca09 46ff 0b30
0081 6599 b7e4 9326 ee00 0000 0049 454e
44ae 4260 82
Beabsichtige ich, um dieses Bild auf einer led-matrix und bevor ich weiter mit anzeigen auf led-matrix, ich beabsichtige, ein Programm zum Dekodieren von png-Datei und verwenden Sie die RGB-Werte zu Programmieren, die leds. Bitte erklären, wie ich verstehen, über Werte und zu extrahieren jedes pixel den RGB-Wert.
Danke.
Wo bekommt man die Datei aus? Kann man die Datei in
Es hat nicht auftreten, es kann einige Spezifikation auf dem web? Es ist erwähnt in den tag.
Ich schlage vor, die
NetPBM PPM
- format statt - es ist viel einfacher zu decodieren. Oder verwenden Sie ImageMagick konvertieren, PNG, PPM mit convert image.png image.ppm
Es hat nicht auftreten, es kann einige Spezifikation auf dem web? Es ist erwähnt in den tag.
Ich schlage vor, die
PPM
P6 oder P3-format hier... en.m.wikipedia.org/wiki/Netpbm_format#PPM_example, Wenn Sie möchten, dekomprimiert, vom Menschen lesbare P3-format, verwenden Sie das ImageMagick-Befehl convert input.png -compress none output.ppm
. Wenn Sie möchten, P6-format, lassen Sie den -compress none
InformationsquelleAutor stuartnox | 2015-05-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen hex-dump eines PNG ist nicht wirklich lesbar sind. "od" kommt näher:
In der ersten Zeile wird der 8-byte-PNG signature, 4-byte-Zahl 13 (Länge der IHDR-chunk), "IHDR".
In der zweiten Zeile ist die 13 bytes IHDR-Daten (Breite, Höhe, bit-Tiefe, Farbe, Typ, etc.), gefolgt von einer 4-byte-CRC - (zyklischen Redundanz-check).
Die Dritte Zeile ist ein gAMA chunk mit einem 4-byte Länge (4), "gAMA", 4-byte-gamma-Wert, und 4-byte-CRC
Die vierte und fünfte Zeile enthält einen tEXt-chunk identifiziert die software, erstellt die PNG-Datei, mit 4-byte-Länge, die 4-byte-chunk-Namen "tEXt", der text, dann 4-byte-CRC.
Der nächsten Zeile beginnt der IDAT-chunk enthält eine zlib-komprimierte Darstellung der Pixel, wieder mit 4-byte-Länge.
Die letzten beiden Zeilen enthalten die CRC für die IDAT-chunk, gefolgt von einer IEND chunk markieren das Ende der PNG-Datei: 0000 ist die Datenlänge, IEND ist die chunk-Namen und 256 B ` 202 ist die vier-byte-CRC für die IEND-chunk.
All dies wird erklärt, in das PNG-format-Spezifikation, die Sie Lesen können, bei http://www.w3.org/TR/PNG
Ich zweite Mark Setchell ' s Empfehlung um die Datei zu konvertieren, um die triviale PPM-format und dann mit dem, dass; das ist, was ich normalerweise Tue, obwohl ich bin sehr vertraut mit PNG und libpng.
Hier ist, was dein Bild sieht aus wie eine PPM:
Die nur "P3" (bedeutet RGB, ASCII-format);
10 10 (width, height);
255 (maximale Intensität für jeden Kanal);
R G B R G B R G B.... bis alle 100 RGB-Pixel übertragen wurden
Beachten Sie, dass der alpha-Kanal, wenn vorhanden, wird bei der Umwandlung verloren
zu PPM. Sie können zu konvertieren NETPBM 's PAM-format http://en.m.wikipedia.org/wiki/Netpbm#PAM_graphics_format, die ähnlich PPM, sondern wurde ausgeweitet auf eine alpha (Deckkraft) für den Kanal (aber leider nicht mehr human-readable), oder an ImageMagick' s TXT-format; unterstützt alpha, aber ist ziemlich ausführlich:
Eine weitere nützliche Anwendung ist "pngcheck", das listet die PNG-chunks und überprüft deren CRC-Fehler:
InformationsquelleAutor Glenn Randers-Pehrson
Lesen Sie Ihre Bild-und Einlesen der bytes nach dem offizielle Spezifikation, würden Sie erhalten in der Tat so etwas wie die Müllkippe am Ende.
Den komprimiert
IDAT
Teil ausgepackt wurde hier von meinem dump-Dienstprogramm, so können Sie die verschiedenen Zeilen-Filter (dieses image ist verwendet, Sub, Up, und Paeth), gefolgt von 4 Werten für jedes pixel in der Reihenfolge Rot, Grün, Blau, Alpha. Sie können sehen, dass die alpha-Werte sind alleFF
(vollständig undurchsichtig), mit Ausnahme der Ecke, Pixel, wo es ist60
(62%, transparent).Dekomprimieren Sie die
IDAT
chunk (und einigen anderen komprimierten chunks), erfordert dies eine Umsetzung derdeflate
Algorithmus (ein link ist in der offiziellen Spezifikation).CRCs gemeldet, als in der Datei vorhanden (ich merke dies eine utility, die eigentlich gar nicht überprüfen, ich muss hinzufügen, dass einige Zeit).
Wenn Sie verwenden möchten original PNG-Dateien als Eingabe, müssen Sie (a) in der Lage sein zu finden, Lesen und verstehen, die offiziellen Spezifikationen, (b) haben ein gutes Verständnis von computer-imaging-Bedingungen wie etwa Graustufen, Indizierte Palette, Gamma -, interlacing, filtering, Alpha und RGB, (c) verstehen
deflate
genug, zu integrieren eine vorhandene Implementierung in Ihre eigenen source-code (das ist, was ich Tat, anstatt die extra Meile zu gehen und schreiben von Grund auf neu), und (d) kombinieren Sie alle diese Informationen in einem abstrakten Modell, das geeignet ist für die Konvertierung der Daten auf Ihre Ausgabe format.Oder können Sie alle überspringen, und verwenden Sie libpng.
InformationsquelleAutor usr2564301