Здравствуйте, barn_czn, Вы писали:
_>Прочитал что GetPixel у Bitmap — просто ужасно тормозной.
_>А мне нужно получить просто яркость пиксела в градации серого. т.е. byte GetBright(int x,int y)
_>каким образом это сделать для разных PixelFormat?
Путем нехитрых манипуляций, можно получить заданный пиксель сразу.
int dx = img->width(), // ширина картинки
dy = img->height(); // высота
BYTE *dst_ptr = ; // сюда нужно дать указатель на буфер Bitmap
int dst_line_size = -img->line_size(); // длина строки в байтах
for( register int i = 0; i < dy; ++i, dst_ptr += dst_line_size )
{
register unsigned __int8 *dst_p = dst_ptr; // получаем буфер на строку
// далее обрабатываем пиксел так как нам надо в зависимости от количества цветов
// в примере приведена работа с 32-битным изображением
for( register j = 0; j < dx; ++j, dst_p += 4 )
{
//dst_p[0] = 0;
//dst_p[1] = 255;
//dst_p[2] = 0;
//dst_p[3] = 255;
memset(dst_p, 0, 4);
}
}
... << RSDN@Home 1.1.4 beta 6a rev. 436>>