«Формат изображения не распознается» в зависимости от монитора - PullRequest
13 голосов
/ 23 января 2012

У нас есть проект CF WPF (.NET 4.0, Visual Studio 2010). Он был протестирован как на Windows XP, так и на Windows 7 и, кажется, работает нормально, но теперь я получил отчеты от двух клиентов на местах (оба почему-то находятся в Испании), которые не могут запустить программное обеспечение.

Глядя на файл журнала, я вижу, что они получают исключение «Формат изображения не распознан» (вызвано: Исключение из HRESULT: 0x88982F07).

Я погуглил ошибку и обнаружил, что, похоже, WPF не удается загрузить значок Vista PNG в Windows XP. Но этим отчетам уже несколько лет, и, наверняка, Microsoft уже разрешила их (?), И в моем случае он отлично работает на большинстве установок XP. Я действительно не хочу ограничивать отображение значков в более поздних версиях Windows.

Чаще всего наше приложение используется на ноутбуках, и один из пользователей сообщил, что, когда он подключил свой ноутбук к внешнему монитору, проблема была решена. И когда я попросил другого проверить то же самое, он получил тот же результат.

Итак, мои вопросы: знаете ли вы, была ли эта проблема решена Microsoft? Знаете ли вы, почему это происходит только на некоторых экземплярах Windows XP и как это связано с монитором? И самое главное, знаете ли вы, что я могу сделать, чтобы сделать наше приложение более устойчивым к этому, не меняя значок?

Ответы [ 3 ]

2 голосов
/ 11 октября 2012

У меня была такая же ошибка сегодня, на ровном месте, и только на моей машине для разработки. Реализация WPF, похоже, все еще содержит ошибки.

Если я правильно понимаю ( статья ), это может происходить везде, где читаются файлы ICO. В моем случае это было при установке иконки для основного окна приложения в XAML:

<Window x:Class="MyApp.MainWindow"  Icon="Dashboard.ico" >

Приведенный выше код неожиданно завершился с ошибкой, но использование файла PNG решило проблему:

<Window x:Class="MyApp.MainWindow"  Icon="Dashboard.png" >
0 голосов
/ 30 июля 2015

из-за этой проблемы я довольно долго стаскивал волосы, и я потратил довольно много времени, пытаясь понять, что происходит, поэтому я поделюсь своими выводами, поскольку это может помочь кому-то другому (возможно, даже мне в будущем):

  • эта проблема возникает в основном в Windows XP и / или при подключении через удаленный рабочий стол (особенно на сервере Windows). Но это отчасти случайное и невозможно воспроизвести специально

  • эти ссылки дают хорошее объяснение, а также решение / обходной путь: http://code.logos.com/blog/2008/08/image_format_error_when_loading_from_a_stream.html https://github.com/LogosBible/Logos.Utility/blob/master/src/Logos.Utility/IO/RebasedStream.cs

  • использование файла png напрямую будет работать, но у него есть свои ограничения (например, я использую файлы .ico, чтобы иметь несколько изображений в зависимости от размера отображаемого значка, и файл .png не может заменить .ico файл для этой цели)

  • лучший ответ - и что я в итоге сделал - это то, что Иоахим сказал в своем комментарии к вопросу ОП:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/9e723d51-0e26-4609-8fe1-5e0edcf7385b/setting-windowicon-to-vista-256x256-png-icon-causes-a-fileformatexception?forum=wpf кажется, указывает, что он разрешится сам, если вы не сожмете значок. - Иоахим Исакссон 23 января '12 в 12: 44

, поэтому я посмотрел в icoFx (который я использую для редактирования иконок) и достаточно точно:

options window in icoFx

Я просто снял этот флажок и снова сохранил свой .ico (размер увеличился с 30Кб до 286Кб!) И вуаля!

проблема решена

0 голосов
/ 11 июня 2014

Этим утром я немного повеселился с этой проблемой. Оказалось, что ошибка возникала только на компьютерах с XP, для которых были установлены 16-битные настройки цвета, а когда я изменил ее на 32-битную, проблема волшебным образом исчезла.

Это касается XP (включая Embedded) SP3.

...