2016-09-21 9 views
1

Я пытаюсь кодировать WriteableBitmap в массив байтов JPEG. Но на самом деле я нашел примеры с методом SaveJpeg, который не существует сейчас. Итак, я попробовал метод ToStreamAsJpeg, но этот метод не работает. Шаг за шагом я не выхожу из этого. БлагодаряUWP Encode 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; 
} 

Кроме того, если у вас есть лучшее выполнение ... ;-)