Как преобразовать битовую глубину изображения в 16 бит в UWP? - PullRequest
0 голосов
/ 04 октября 2019

Я использую FileOpenPicker, чтобы позволить пользователям открывать ". Bmp" , ". Jpg" или ". PNG" .

Затем импортированное изображение требует преобразования пикселей, прежде чем оно сможет работать дальше с микроконтроллером, используя дисплей, работающий в 16 бит (формат RGB-565) .

Я пытаюсь преобразовать импортированное изображение, но ни один из типов BitmapPixelFormat не подходит для этого .. Я тоже не могу использовать System.Drawing.

Я пытался использовать SoftwareBitmap класс для преобразования импортированных изображений в формат Rbga8, но это так близко, как я получил.

Любая помощь приветствуется, спасибо заранее.

            using (IRandomAccessStream fileStream = await file.OpenAsync(FileAccessMode.Read))
            {
                BitmapImage bitmapImage = new BitmapImage();
                await bitmapImage.SetSourceAsync(fileStream);
                if (bitmapImage.PixelWidth <= 140 && bitmapImage.PixelHeight <= 190)
                {
                    // Create the decoder from the stream
                    BitmapDecoder decoder = await BitmapDecoder.CreateAsync(fileStream);
                    // Get the SoftwareBitmap representation of the file
                    SoftwareBitmap softwareBitmap = await decoder.GetSoftwareBitmapAsync();
                    SoftwareBitmap outputBitmap = SoftwareBitmap.Convert(softwareBitmap, BitmapPixelFormat.Rgba8, BitmapAlphaMode.Ignore);

                    SplashImage = bitmapImage;
                }
                else
                {
                    DisplaySplashImageErrorDialog();
                }
            }
...