byte[] to Image & Image to byte[]

Hier ein kleines Snippet um in WPF ein Image in ein Byte-Array, und zurück, zu wandeln.
BitmapImage bmpImage = (BitmapImage)image1.Source;
int height = bmpImage.PixelHeight;
int width = bmpImage.PixelWidth;
PixelFormat format = bmpImage.Format;
int stride = width * ((format.BitsPerPixel + 7) / 8);

// Image to byte[]
byte[] byteImage = new byte[height * stride];
bmpImage.CopyPixels(byteImage, stride, 0);

// byte[] to Image
image2.Source = BitmapImage.Create(width,
                          height,
                          96,
                          96,
                          System.Windows.Media.PixelFormats.Bgr32,
                          null,
                          byteImage,
                          stride);
Bookmark and Share

2 Kommentare:

Anonym hat gesagt…

Hallo,
vielen dank für ihren code.
ist es möglich, aus dem gewonnen byte ein zwei-dimensionales array zu machen? (sodass ich x+y zu jedem pixel habe)

Flo hat gesagt…

Hallo, du kannst auf die X und Y Werte mit byteImage[Y*stride+X*format.BitsPerPixel] zugreifen. Natürlich von 0 beginnend. Für ein zweidimensionales Array bräuchtest du eine neue Datenstruktur, da jedes Pixel in mehreren Bytes gespeichert wird. Im RGB-Raum sind es beispielsweise 3.

Kommentar veröffentlichen