Please wait!
Please wait!

ALEXEYWORLD.COM

alexeyworld.com

ImageFormat.Icon и файл .ico

/uploads/blog/imageformatico.png

Как то возникла необходимость сохранить изображение в формате .ico. Казалось бы все просто. Но не тут то было.

Используя метод Icon.Save() мы получали файл в формате .ico, но с весьма урезанной цветовой палитрой, что не хорошо. Это проблема в .NET платформе, так что стандартными средствами полноцветный значок вам не получить.

Начал ковыряться и искать другие пути решения.

Самым распространенным оказлася предложенный метод Image.Save(fileName, Imaging.ImageFormat.Icon). Все с радостью благодарили о таком сообщении, сохраняли изображение с расширением .ico в полноцветном режиме и казалось бы все, ура, работает. Я такому положению рад особо не был, потому что еще раньше пробовал, нужного эффекта он не дал.

Немного покопавшись, выяснил, что при таком сохранении мы получаем обычный .png формат, и при попытке использования его в качестве значка мы получим исключение. Копая далее набрел наконец-то на нормальное объяснение этого дефекта.

Оказывается GDI+ компонент .NET Framework имеет встроенные кодеры и декодеры, которые поддерживают чтение и запись следующих типов файлов: BMP, GIF, JPEG, PNG и TIFF. И умеет только читать следующие форматы: WMF, EMF, ICON.

Вот и все, GDI+ не умеет записывать ico формат. Поэтому не тратьте свое время, чтобы разобраться в чем проблема.

Данную информацию нашел на английском языке на сайте Microsoft.

опубликовано: 31.01.2011, 15:46 | просмотров: 6183 |