2011-01-02 14 views
1

Ich las Scott Guthrie Blog und ich habe eine Probe zu treffen. Sie finden es in HereWarum Bilder werden durch Byte-Array dargestellt?

Es ist Byte-Array verwendet, um Bild in diesem Beispiel darzustellen. Ich habe keine Ahnung, warum es durch Byte-Array dargestellt wird. Ich erinnere mich auch, dass einige der Dateien auch in .NET Framework als Byte-Array verarbeitet werden.

Kann mir jemand erklären, warum Byte-Array statt String oder gar eine Klasse, die Bild hält?

+0

Warum würden Sie eine Zeichenfolge oder eine Klasse verwenden, um einen Stream von Binärdaten darzustellen? – bevacqua

Antwort

3

Eine Auflistung von Bytes ist die einfachste Möglichkeit, eine Bilddatei als Daten darzustellen. Eine Zeichenfolge wäre nicht geeignet, da sie Zeichencodes enthält und eine Bilddatei nicht aus Zeichen besteht. Es gibt keine spezielle Klasse zum Speichern der Daten einer Bilddatei, da ein Byte-Array dafür gut geeignet ist.

Jede Datei kann als eine Sammlung von Bytes behandelt werden, so dass ein Byte-Array das Ergebnis des Lesens einer Datei als Binärdaten ist. Eine Datei kann auch als ein spezifisches Format dekodiert werden, wie eine Textdatei, die zu einer Zeichenkette führt, oder ein komprimiertes Bildformat (JPEG, GIF, PNG usw.), was zu einem Bitmap Objekt führt, das das dekomprimierte Bild enthält.

5

Bilder sind Binärdaten - dies wird leicht als Bytearrays dargestellt.

Das Bild im Beispiel wird in der Datenbank als BLOB gespeichert - keine Zeichenfolge oder Position, also binäre Daten.

1

Man behandelt eine Bitmap als ein Array von RGB-Wert. Fürchten Sie jedes Pixel, zum Beispiel wird jeder Wert R, G und B in einem Byte codiert. Sie könnten auch einen vierten Wert haben, der Transparenz ist.

Spielen mit dem Farb-/Transparenzindex, der x-Koordinate des Pixels und der Bildbreite für das Abrufen der Pixel an der y-Koordinate ... somit hat man schnellen Zugriff auf das ganze Bild zum günstigen Preis von einigen Multiplikation und ein Array Operator [] Aufruf.

Heutzutage kann Effizienz immer noch ein Problem sein, wenn man mit Bildern arbeitet (viel und viel Arbeit an jedem einzelnen Pixel, was bedeutet, dass viele Loops über den gesamten Inhalt des Bildes verteilt sind).

Das könnte erklären, dass Bilder noch durch Arrays von Bytes behandelt werden.

+0

Die Bilddaten in den Beispielen sind jedoch keine RGB-Bitmap, sondern ein komprimiertes Bildformat, bei dem Sie nicht einfach direkt auf die Pixel zugreifen können. Das Dekomprimieren des Bildes mit regulären Mitteln führt nicht zu einem Byte-Array, sondern zu einem "Bitmap" -Objekt. – Guffa

+0

@Guffa Schande über mich Ich habe nicht die Zeit genommen, das ganze Beispiel zu lesen. –

+0

Warum muss man sich schämen? Das, was du verpasst hast, sollte kein Grund zur Schande sein. – Freshblood

Verwandte Themen