Re: Быстрый доступ к пикселам Bitmap
От: Toha_  
Дата: 14.02.06 13:37
Оценка:
Здравствуйте, 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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.