Об иконках и их извлечении из ресурсов


Для просмотра и редактирования ресурсов в файлах можно использовать редакторы ресурсов, подобные Restorator или Resource Hacker.

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

Обычно в ресурсе-иконке содержится набор иконок, т.е., несколько изображений разного размера и с разным количеством использованных цветов (битность). Для примера, на рисунке ниже показано содержимое ресурса-иконки с индексом 104 из файла user32.dll операционной системы Windows XP.

Пример ресурса-иконки

Как видно, ресурс содержит в себе 9 изображений с различными параметрами.

По-умолчанию, операционная система (Windows) сама выбирает, какое изображение, из содержащихся в ресурсе, будет отображено (в проводнике или на Рабочем столе). С помощью Easy ICO to PNG converter, так же, как с помощью других редакторов ресурсов, можно извлечь одну иконку с нужными размерами и битностью.

Многие иконки ОС Windows (и приложений) не содержат в себе изображений с alpha каналом (для простоты - прозрачность). Если после извлечения такой иконки из ресурса открыть её в каком-нибудь редакторе (например, MS Paint) или отобразить с помощью проводника Windows, можно будет увидеть примерно следующее:

Извлеченная ICO

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

Правильно отображенная иконка

Дело в том, что каждая такая иконка состоит из двух частей: XOR-маски и AND-маски.

Маски

Эффект полупрозрачности достигается путем сложения этих масок с помощью функций передачи битовых блоков данных с определенными параметрами. Windows-API функция DrawIcon (DrawIconEx) работает именно так.

Программа Easy ICO to PNG converter позволяет извлекать иконки из ресурсов и сразу конвертировать иконки с масками в изображение формата PNG с альфа каналом, т.е., извлеченная и сконвертированная с помощью Easy ICO to PNG converter в формат PNG иконка из примера выше всегда будет отображаться правильно (при условии, что приложение, в котором открывается (или используется) это изображение, корректно обрабатывает формат PNG).

Конвертировать в формат PNG имеет смысл только 32-битные изображения.

Иногда, cреди изображений в ресурсах-иконках могут находиться изображения уже с alpha каналом. Такие иконки так же можно не конвертировать в формат PNG.

Вернуться к описанию программы Easy ICO to PNG converter.