Простой исходный код обработки изображения iphone, что это делает - PullRequest
1 голос
/ 04 июля 2010

Я просматриваю исходный код для вышеуказанного проекта и не понимаю следующие строки кода, может кто-нибудь помочь мне объяснить это, пожалуйста? Я пытаюсь заставить код работать с цветными изображениями, поскольку в настоящее время он работает только с изображениями в оттенках серого. У меня есть основные методы работы, но фильтры применяются только к верхней четверти возвращенных изображений.

// В файле heeder.

inline uint8_t* operator[](const int rowIndex) {
    return m_yptrs[rowIndex];
}

// в файле .mm

void Image::initYptrs() {
m_yptrs=(uint8_t **) malloc(sizeof(uint8_t *)*m_height);
for(int i=0; i<m_height; i++) {
    m_yptrs[i]=m_imageData+i*m_width;
    }
}

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

m_yptrs[i]=m_imageData+i*m_width;

Заранее спасибо.

1 Ответ

4 голосов
/ 04 июля 2010

Image::initYptrs() инициализирует массив указателей на начало каждой строки изображения.

Соответствующая строка, вероятно, должна читаться как

m_yptrs[i] = m_imageData + i*BPP*m_width;

Где BPP - байты на пиксель (например, 3 для RGB, 4 для изображений RGBA).

...