Как сохранить hicon в png формат на c++?

Пользователь

от hobart.rath , в категории: C/C++ , 9 месяцев назад

Как сохранить hicon в png формат на c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от deion , 9 месяцев назад

@hobart.rath 

Вы можете сохранить значок в формате PNG на C++, используя библиотеку FreeImage.


Например, для сохранения значка в формате PNG, следуйте этому примеру кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include 

// Получение HICON и сохранения его в PNG
void saveIconToPNG(HICON hIcon, const char* filePath)
{
    FreeImage_Initialise();

    // Получение размеров и данных битовой карты значка
    ICONINFO iconInfo = { 0 };
    GetIconInfo(hIcon, &iconInfo);

    BITMAP bmp = { 0 };
    GetObject(iconInfo.hbmColor, sizeof(bmp), &bmp);

    // Создание изображения FreeImage с данными битовой карты значка
    FIBITMAP* fiBitmap = FreeImage_ConvertFromRawBits(
        (BYTE*)bmp.bmBits, bmp.bmWidth, bmp.bmHeight, bmp.bmWidthBytes,
        bmp.bmBitsPixel, 0xFF0000, 0x00FF00, 0x0000FF, false
    );

    // Сохранение изображения FreeImage в PNG-файле
    FreeImage_Save(FIF_PNG, fiBitmap, filePath, 0);

    // Очистка ресурсов
    FreeImage_Unload(fiBitmap);
    DeleteObject(iconInfo.hbmColor);
    DeleteObject(iconInfo.hbmMask);
    FreeImage_DeInitialise();
}


В этом примере кода функция saveIconToPNG принимает параметры HICON и путь файла, в который нужно сохранить значок в формате PNG.


Сначала производится инициализация FreeImage. Затем используется функция GetIconInfo, чтобы получить информацию о значке, включая его размеры и данные битовой карты. Эти данные используются для создания изображения FreeImage с помощью функции FreeImage_ConvertFromRawBits.


Конечно, чтобы использовать этот код, вы должны установить и подключить библиотеку FreeImage к своему проекту C++.