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