UWP将RAW 8位转换为PNG

时间:2019-03-22 08:55:54

标签: c# visual-studio uwp

我正在为UWP开发一个应用程序,我们连接了一个提供RAW8Bit图像的扫描仪,我们正在寻求将RAW8Bit转换为PNG文件。我们设法通过首先转换为位图来做到这一点,但是我们需要另一种直接将RAW转换为PNG的方法

1 个答案:

答案 0 :(得分:2)

您应确保图像的宽度和高度以及字节列表格式为Bgra8。

Bgra8表示一个像素为8位,第一个字节为蓝色...

您可以使用BitmapEncoder将字节列表编码为png文件。

            var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, file);
            encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint) width, (uint) height, 96,
                96, byteList);
            await encoder.FlushAsync();

编写代码以保存到文件。

    private async Task SaveToFileAsync(byte[] byteList, int width, int height, IStorageFile file)
    {
        using (var stream = (await file.OpenStreamForWriteAsync()).AsRandomAccessStream())
        {
            await ByteToPng(byteList, width, height, stream);
        }
    }

    private async Task ByteToPng(byte[] byteList, int width, int height, IRandomAccessStream file)
    {
        try
        {
            var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, file);
            encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint) width, (uint) height, 96,
                96, byteList);
            await encoder.FlushAsync();
        }
        catch (Exception e)
        {
        }
    }