UWP将WriteableBitmap编码为JPEG字节数组

时间:2016-09-21 10:22:40

标签: uwp writeablebitmap writeablebitmapex

我试图将WriteableBitmap编码为JPEG字节数组。但实际上我找到了现在不存在的SaveJpeg方法的例子。 所以我尝试了ToStreamAsJpeg方法,但这种方法不起作用。随着一步一步我不能摆脱它。 感谢

1 个答案:

答案 0 :(得分:2)

好的,所以我用以下方法解决了我的问题:

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

另外,如果你有最好的实施......; - )