UWP конвертировать RAW 8 бит в PNG - PullRequest
0 голосов
/ 22 марта 2019

Я занимаюсь разработкой приложения для UWP, у нас подключен сканер, который предоставляет изображения в формате RAW8Bit, и мы хотим преобразовать RAW8Bit в файлы PNG. Нам удается это сделать, сначала выполнив преобразование в растровое изображение, но нам нужен другой способ прямого преобразования из RAW в PNG

.

1 Ответ

2 голосов
/ 23 марта 2019

Вы должны убедиться, что ширина и высота изображения и формат списка байтов - 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)
        {
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...