Как увеличить / уменьшить символ без знака?
-
20-09-2019 - |
Вопрос
Я пытаюсь изменить значения пикселей (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;
}
Боковое Примечание: RawData - это буфер данных типа unsigned char
Решение
Вполне возможно, что вы переполняете конец выделенного вами буфера, и именно поэтому вы получаете нарушение доступа.Это, скорее всего, означает, что ваша математика неверна при распределении, или ваш указатель RawData имеет неправильный тип.
Если вы обращаетесь к необработанным данным загруженного UIImage, они могут быть отображены в память, доступную только для чтения.Скорее всего, вам нужно будет скопировать данные в буфер, который вы выделили.
Другие советы
Хм...Что такое rawdata
?Может быть, это const
тип, который вы не можете изменить?