Как увеличить / уменьшить неподписанный символ? - PullRequest
1 голос
/ 30 августа 2009

Я пытаюсь изменить значения пикселей (8 бит на канал RGBA) путем численного увеличения / уменьшения значений на определенную величину. Как я могу сделать это в Objective-C или C? Следующий код генерирует « Ошибка: EXC_BAD_ACCESS » каждый раз.

// Try to Increase RED by 50
    for(int i = 0; i < myLength; i += 4) {

        //NSLog prints the values FINE as integers
            NSLog(@"(%i/%i/%i)", rawData[i], rawData[i+1], rawData[i+2]);

            //But for some reason I cannot do this
        rawData[i]+=50;

}

и даже

// Try to set RED to 50
    for(int i = 0; i < myLength; i += 4) {

            //I cannot even do this...
        unsigned char newVal = 50;
        rawData[i] = 50;

}

Sidenote: rawData - это буфер данных типа unsigned char

Ответы [ 2 ]

4 голосов
/ 30 августа 2009

Возможно, вы превышаете конец выделенного буфера, и именно поэтому вы получаете нарушение прав доступа. Скорее всего, это означает, что ваша математика неверна в распределении, или указатель rawData имеет неправильный тип.

Если вы обращаетесь к необработанным данным загруженного UIImage, они могут отображаться в памяти только для чтения. Скорее всего, вам нужно скопировать данные в выделенный вами буфер.

0 голосов
/ 30 августа 2009

Хм ... Что такое rawdata? Может быть, это const тип, который вы не можете изменить?

...