Ich habe die folgenden zwei Funktionen Bytes zu Bild und Anzeige auf Bild in WPFKann nicht jpeg dekodieren mit JpegBitmapDecoder
private JpegBitmapDecoder ConvertBytestoImageStream(byte[] imageData)
{
Stream imageStreamSource = new MemoryStream(imageData);
JpegBitmapDecoder decoder = new JpegBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource bitmapSource = decoder.Frames[0];
return decoder;
}
Der obige Code funktioniert nicht überhaupt zu konvertieren. Ich bekomme immer die Ausnahme, dass "Keine Bildgebungskomponente gefunden" Bild wird nicht angezeigt.
private MemoryStream ConvertBytestoImageStream(int CameraId, byte[] ImageData, int imgWidth, int imgHeight, DateTime detectTime)
{
GCHandle gch = GCHandle.Alloc(ImageData, GCHandleType.Pinned);
int stride = 4 * ((24 * imgWidth + 31)/32);
Bitmap bmp = new Bitmap(imgWidth, imgHeight, stride, PixelFormat.Format24bppRgb, gch.AddrOfPinnedObject());
MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Jpeg);
gch.Free();
return ms;
}
Diese Funktion funktioniert, ist aber sehr langsam. Ich möchte meinen Code optimieren.
Es ist mir nicht ganz klar, welche 'imageData' Sie an' ConvertBytestoImageStream' übergeben. Ist es ein JPEG-Puffer oder handelt es sich um rohe Pixeldaten? – Clemens
Es ist ein Jpeg-Puffer – xaria