Benutzer mit den meisten Antworten
Bitmap zu byte array

Frage
-
Hallo!
ich will in einer WPF-Anwendung eine Bilddatei untersuchen.
Mit SharpDevelop und WindowsForms habe ich das mit Bitmap.GetPixel(int x, int y) gelöst,
ich denke aber, dass es effizienter wäre, erst aus dem Bild ein byte-Array zu erstellen und dieses dann zu analysieren.
Ich habe in den Weiten des Internets folgenden Code gefunden:
byte[] imageToByteArray(System.Drawing.Image imageIn) { MemoryStream ms = new MemoryStream(); imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); return ms.ToArray(); }
Der Code scheint aber nicht zu funktionieren.
Meine Anwendung erwartet ein Array der Form {Rot von Pixel 1, Grün von Pixel 1, Blau von Pixel 1, Alpha von Pixel 1, Rot von Pixel 2, Grün von Pixel 2, Blau von Pixel 2, Alpha von Pixel 2, Rot von Pixel 3, Grün von Pixel 3, Blau von Pixel 3, Alpha von Pixel 3...}
Falls der Code das byte-Array mit einem anderem System erstellt, macht das nichts, ich kann ja meine Anwendung darauf anpassen. Streng genommen bräuchte ich die Alpha-Werte zur Analyse erstmal nicht.
Vielleicht kennt ihr ja, falls der Code generell nicht funktioniert ein geeigneteres Beispiel oder wisst, mit welchem System das Byte-Array geschrieben wird.
Antworten
-
Hallo,
was passt Dir nicht an: Byte Array als .bmp, .jpg und .png speichern, wo so ziemlich alles drinsteht.
Dein obiger Versuch ist wirkbefreit, denn damit erhältst Du eine GIF Datei und müsstest Deinem Programm das Auswerten von Gif89a (oder 87a) beibringen und für jedes weitere Format (JPG, PNG) gilt entsprechendes.
Weswegen man üblicherweise die Datei als eine Windows Bitmap in den Speiecher einliest (Image eben), womit man nur ein (relativ einfaches) Speicherformat bearbeiten muss - eine BMP Datei ist wieder komplexer. Das Wie stand bereits in Links in oben genannter Diskussion.
Gruß Elmar
- Als Antwort vorgeschlagen Aleksander Chalabashiev Dienstag, 31. März 2015 14:20
- Als Antwort markiert Aleksander Chalabashiev Freitag, 3. April 2015 10:22
-
Hallo,
der dort genannte Artikel von Bob Powell zeigt beides für System.Drawing, der von Charles Petzold das Äquivalent für WPF.
Also bitte lesen und zu verstehen versuchen, anstatt sinnlosen Code zu produzieren!
Gruß Elmar
- Als Antwort vorgeschlagen Aleksander Chalabashiev Freitag, 3. April 2015 10:22
- Als Antwort markiert Aleksander Chalabashiev Mittwoch, 8. April 2015 08:36
Alle Antworten
-
Hallo,
was passt Dir nicht an: Byte Array als .bmp, .jpg und .png speichern, wo so ziemlich alles drinsteht.
Dein obiger Versuch ist wirkbefreit, denn damit erhältst Du eine GIF Datei und müsstest Deinem Programm das Auswerten von Gif89a (oder 87a) beibringen und für jedes weitere Format (JPG, PNG) gilt entsprechendes.
Weswegen man üblicherweise die Datei als eine Windows Bitmap in den Speiecher einliest (Image eben), womit man nur ein (relativ einfaches) Speicherformat bearbeiten muss - eine BMP Datei ist wieder komplexer. Das Wie stand bereits in Links in oben genannter Diskussion.
Gruß Elmar
- Als Antwort vorgeschlagen Aleksander Chalabashiev Dienstag, 31. März 2015 14:20
- Als Antwort markiert Aleksander Chalabashiev Freitag, 3. April 2015 10:22
-
-
Hallo,
der dort genannte Artikel von Bob Powell zeigt beides für System.Drawing, der von Charles Petzold das Äquivalent für WPF.
Also bitte lesen und zu verstehen versuchen, anstatt sinnlosen Code zu produzieren!
Gruß Elmar
- Als Antwort vorgeschlagen Aleksander Chalabashiev Freitag, 3. April 2015 10:22
- Als Antwort markiert Aleksander Chalabashiev Mittwoch, 8. April 2015 08:36