Проблема
Привет всем!
У меня есть этот код, который выполняет циклы моего jpg-изображения, изменяя пиксели и, наконец, сохраняя его как тип png. Проблема в том, что результирующее изображение имеет разрядность 32 бита. Мне нужно, чтобы он был 24-битным, может ли кто-нибудь пролить свет на правильный метод его настройки? Правильно ли я смотрю на настройку формата пикселей PixelFormat24bppRGB?
Код
static inline void Brighten(Gdiplus::Bitmap* img)
{
int width = img->GetWidth()/8,height = img->GetHeight(), max = (width*height),r,g,b;
Gdiplus::Color pixel;
for(int a = 0,x = 0, y = -1; a < max; ++a)
{
x = a%width;
if(x == 0)
++y;
img->GetPixel(x,y,&pixel);
r = pixel.GetR();
g = pixel.GetG();
b = pixel.GetB();
if (r > 245) r = 245;
if (g > 245) g = 245;
if (b > 245) b = 245;
r += 10;
g += 10;
b += 10;
pixel = Gdiplus::Color(r,g,b);
img->SetPixel(x,y,pixel);;
}
}
ULONG_PTR m_dwToken = 0;
Gdiplus::GdiplusStartupInput input;
Gdiplus::GdiplusStartupOutput output;
Gdiplus::GdiplusStartup( &m_dwToken, &input, &output );
USES_CONVERSION_EX;
Gdiplus::ImageCodecInfo* pEncoders = static_cast< Gdiplus::ImageCodecInfo* >( _ATL_SAFE_ALLOCA(1040, _ATL_SAFE_ALLOCA_DEF_THRESHOLD));
Gdiplus::DllExports::GdipGetImageEncoders(5, 1040, pEncoders );
CLSID clsidEncoder = pEncoders[4].Clsid;
Gdiplus::Bitmap img1((CT2W)L"IMG_1.JPG");
Brighten(&img1);
img1.Save((CT2W)L"IMG_1_R3.PNG",&clsidEncoder,NULL);
Заранее спасибо!
GdiPlus::Bitmap
в PixelFormat24bppRGB. См.: msdn.microsoft.com/en-us/ библиотека/ms536313%28VS.85%29.aspx - person dirkgently   schedule 15.03.2010