Laden...

Problem mit Byte[] eines Gray8-Images

Erstellt von cuanu vor 11 Jahren Letzter Beitrag vor 11 Jahren 942 Views
C
cuanu Themenstarter:in
10 Beiträge seit 2012
vor 11 Jahren
Problem mit Byte[] eines Gray8-Images

Hallo,

ich probiere gerade die Länge des Byte[] eines Gray8-Images zu bestimmen.
Es ist so, dass wir zu einem Projekt einige Grey8 Bilder bekommen die wir wieder einfärben sollen und als 32Bit Image speichern.

Da wir dies auch umgekehrt machen sollen: Also von 32Bit in 8Bit ( Was wunderbar funktioniert) habe ich gedacht das ich diesen Code nehme und den Prozess "einfach" umkehre.

Es ist so das bei einem 32Bit Image von 512x512 Pixel ein Byte[] mit der Länge 5125124 entsteht. Müsste dann nicht bei einem Gray8 Bild ein Byte[] mit der Länge 5125121 entstehen?

Hier bekomme ich leider immer eine Exception: ArgumentOutOfRange.

Beim CopyPixel kommt die Exception.


                RenderTargetBitmap rtb = new RenderTargetBitmap(xmlData.Width, xmlData.Height, 96, 96, PixelFormats.Default);
                rtb.Render(picArea);
                CroppedBitmap croppedImage = new CroppedBitmap(rtb, new Int32Rect(0,0,xmlData.Width,xmlData.Height));
                var bmp = croppedImage as CroppedBitmap;
                int height = bmp.PixelHeight;
                int width = bmp.PixelWidth;
                int stride = width * ((bmp.Format.BitsPerPixel + 7) / (8*4));
                byte[] bits = new byte[height * stride];
                bmp.CopyPixels(bits, stride, 0);
                byte[] bitsDanach = new Byte[bits.Length * 4];

S
248 Beiträge seit 2008
vor 11 Jahren

Hallo,

solltest du nicht FormatConvertedBitmap verwenden anstatt CroppedBitmap?

Grüße