2016-09-21 3 views
1

Ich versuche WriteableBitmap zu JPEG-Byte-Array zu kodieren. Aber tatsächlich habe ich Beispiele mit der SaveJpeg Methode gefunden, die jetzt nicht existiert. Also habe ich die ToStreamAsJpeg-Methode versucht, aber diese Methode funktioniert nicht. Mit dem Schritt für Schritt komme ich nicht raus. DankUWP WriteableBitmap in JPEG-Byte-Array zu kodieren

Antwort

1

Okay, so löste ich mein Problem mit der folgenden Methode:

private async Task<byte[]> EncodeJpeg(WriteableBitmap bmp) 
{ 
    SoftwareBitmap soft = SoftwareBitmap.CreateCopyFromBuffer(bmp.PixelBuffer, BitmapPixelFormat.Bgra8, bmp.PixelWidth, bmp.PixelHeight); 
    byte[] array = null; 

    using (var ms = new InMemoryRandomAccessStream()) 
    { 
     BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, ms); 
     encoder.SetSoftwareBitmap(soft); 

     try 
     { 
      await encoder.FlushAsync(); 
     } 
     catch { } 

     array = new byte[ms.Size]; 
     await ms.ReadAsync(array.AsBuffer(), (uint)ms.Size, InputStreamOptions.None); 
    } 

    return array; 
} 

Auch, wenn Sie eine beste Implementierung haben ... ;-)