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