Использование WIC для воспроизведения WPF BitmapImage.DecodePixelWidth / Height - PullRequest
0 голосов
/ 10 апреля 2019

Мне нужно создать миниатюры «огромных» файлов изображений без загрузки полного изображения в память. Эта функция прекрасно реализована в WPF BitmapImage.DecodePixelWidth / Height , но мне нужно использовать ее в неуправляемой DLL C ++.

Я "думаю", что это реализовано с использованием WIC, однако я не могу найти какой-либо полезный образец об этой функции, я бы загрузил все форматы миниатюр, которые может обрабатывать WIC.

Кто-нибудь может помочь с этим?

1 Ответ

1 голос
/ 10 апреля 2019

Два из кодеков WIC ( JPEG и JPEG-XR ) поддерживают масштабирование в декодере, и вы можете проверить это во время выполнения, используя IWICBitmapSourceTransform::GetClosestSize.Однако даже если исходное изображение должно быть декодировано с его полным разрешением, IWICBitmapScaler будет использовать минимальный объем памяти при масштабировании изображения до желаемого размера, как указано в примечаниях документации .

.Более того, IWICBitmapScaler будет автоматически использовать возможность декодера IWICBitmapSourceTransform, когда она поддерживается, так что вы можете просто использовать ее и автоматически получить требуемое поведение.

...