Доступ к данным изображения из растрового изображения с указателем - PullRequest
1 голос
/ 12 января 2009

Моя проблема заключается в правильном считывании данных пикселей, как только у меня есть указатель.

Итак, у меня есть изображение, которое занимает весь экран iPhone и не имеет альфа-канала (24 бита на пиксель, 8 бит на компонент, 960 байт на строку), и я хочу узнать цвет определенного пикселя.

У меня есть указатель на данные

UInt8 *data = CFDataGetBytePtr(bitmapData);

но теперь я не уверен, как правильно индексировать данные с заданной координатой?

1 Ответ

2 голосов
/ 13 января 2009
UInt8 *data = CFDataGetBytePtr(bitmapData);

unsigned long row_stride = image_width * no_of_channels; // 960 bytes in this case
unsigned long x_offset = x * no_of_channels;

/* assuming RGB byte order (as opposed to BGR) */
UInt8 r = *(data + row_stride * y + x_offset );
UInt8 g = *(data + row_stride * y + x_offset + 1);
UInt8 b = *(data + row_stride * y + x_offset + 2);


/* less portable but if you want to access it in as a packed UInt32, you could do */
UInt32 color = *(data + row_stride * y + x) & 0x00FFFF;  /* little endian byte ordering */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...