Проблемы при использовании WI C (Windows компонент обработки изображений) - PullRequest
1 голос
/ 07 марта 2020

Недавно я использовал WI C для разбора GIF. Код был написан, и он может прекрасно работать на win10 и win7, но на WinXP он не удался. Я исключил это в течение долгого времени и, наконец, нашел причину в этой строке кода:

// pBitmapFrameDecode is an IWICBitmapFrameDecode
hr = pBitmapFrameDecode->GetMetadataQueryReader(&pFrameMetadataQueryReader);
if (hr == WINCODEC_ERR_UNSUPPORTEDOPERATION) MessageBoxA(NULL, "WINCODEC_ERR_UNSUPPORTEDOPERATION", "Error!", MB_OK);

В этой строке кода GetMetadataQueryReader не удалось, это приведет к сбою GetMetadataByName в следующем код. Я чувствовал себя очень странно, поэтому я проверил MSDN. IWICBitmapFrameDecode :: GetMetadataQueryReader

Но я обнаружил, что мой компьютер XP соответствует минимальным требованиям к конфигурации (SP3), написанным в MSDN. Что еще более странно, функция возвращает WINCODEC_ERR_UNSUPPORTEDOPERATION. Это так странно. Сначала я подумал, что это проблема с моим собственным устройством, поэтому я позаимствовал несколько компьютеров XP и запустил на них свой код. Все они возвращаются WINCODEC_ERR_UNSUPPORTEDOPERATION. MSDN не так?

1 Ответ

5 голосов
/ 07 марта 2020

MSDN не является «неправильным», но несколько неполным.

Большая часть WI C часто является просто посредником между вашим кодом и декодером / кодерами (кодеками, специфицирующими c для данного файла format).

Тот факт, что GetMetadataQueryReader поддерживается в XP, не означает, что данный код c в XP поддерживает метаданные того же уровня, что и тот же код c в других Windows версиях. Метаданные изображений могут быть довольно сложными и глубокими (и спецификации могут быть улучшены во времени).

Если вы go перейдете на эту страницу MSDN: Что нового для Windows 7 , вы Прочитайте это:

Расширенная поддержка метаданных для JPEG, PNG и GIF:

В Windows 7 WI C расширил свою поддержку метаданных для JPEG, PNG и Изображения GIF.

  • Добавлена ​​поддержка анимированных свойств GIF и GIF.

Так что это, вероятно, означает, что вы касаетесь файлов GIF, которые имеют неподдерживаемые свойства метаданных, для какая поддержка была добавлена ​​после XP (Vista или 7).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...