2016-09-21 29 views
1

我試圖將WriteableBitmap編碼爲JPEG字節數組。但實際上我發現了現在不存在的SaveJpeg方法的例子。 所以我嘗試了ToStreamAsJpeg方法,但是這種方法不起作用。隨着一步一步,我不會擺脫它。 感謝UWP將WriteableBitmap編碼爲JPEG字節數組

回答

1

好了,所以我解決我的問題有以下方法:

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; 
} 

另外,如果你有一個最好的實現... ;-)