1 >
#include «FreeImage.h» основа int (argc int, argv char* []) { FIBITMAP *hDIB24bpp = FreeImage_Load (FIF_BMP, «test.bmp», 0); если (hDIB24bpp) {, то // цвет-квантует 24bpp (результаты в поэлементном карте 8bpp для того чтобы установить транспарант) FIBITMAP *hDIB8bpp = FreeImage_ColorQuantize (hDIB24bpp, FIQ_WUQUANT); // получает палитру и считает ярким - зеленый цвет *Palette RGBQUAD = FreeImage_GetPalette (hDIB8bpp); Транспарант БАЙТА [256]; для (неподписанный I = 0; iий < 256; i++) { Транспарант [I] = 0xFF; если (&& >= 0xFE палитры [I] .rgbGreen && == 0x00 палитры [I] .rgbBlue == 0x00 палитры [I] .rgbRed) { Транспарант [I] = 0x00; } } // установило таблицу tranparency FreeImage_SetTransparencyTable (hDIB8bpp, транспарант, 256); // сохраняет изображение 8bpp как прозрачное PNG FreeImage_Save (FIF_PNG, hDIB8bpp, «test.png», 0); FreeImage_Unload (hDIB24bpp); FreeImage_Unload (hDIB8bpp); } возвращение 0; } class= " ясное " >After
FIBITMAP hDIB24bpp = FreeImage.Load (FREE_IMAGE_FORMAT.FIF_JPEG, «c: /Sunset.jpg», 0); FIBITMAP hDIB8bpp = FreeImage.ColorQuantize (hDIB24bpp, FREE_IMAGE_QUANTIZE.FIQ_WUQUANT); Палитра RGBQUAD = FreeImage.GetPalette (hDIB8bpp); транспарант байта [] = новый байт [256]; для (int iий = 0; iий < 256; i++) { транспарант [I] = 0xFF; если (&& >= 0xFE палитры [I] .rgbGreen && == 0x00 палитры [I] .rgbBlue == 0x00 палитры [I] .rgbRed) { транспарант [I] = 0x00; } } class= " ясное " >
1: 2:
*pPalette RGBQUAD = FreeImage.GetPalette (hDIB8bpp); Палитра = *pPalette RGBQUAD;