Cómo aumentar / disminuir un unsigned char?
-
20-09-2019 - |
Pregunta
Estoy intentando modificar los valores de píxel (8 bits por canal RGBA) aumentando numéricamente / disminución de los valores en una cierta cantidad. ¿Cómo puedo hacer esto en Objective-C o C? El código siguiente genera un " Error: EXC_BAD_ACCESS ". Cada
// 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;
}
e incluso
// 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;
}
Nota al margen: rawData es un buffer de datos de tipo char sin signo
Solución
Es posible que usted está invadiendo el final de su búfer asignado, y es por eso que está recibiendo la violación de acceso. Que muy probablemente significa que su matemática está mal en la asignación o el puntero rawData es del tipo incorrecto.
Si está accediendo a los datos en bruto de un UIImage cargado, que podría ser asignada a la memoria de sólo lectura. Que había necesidad de copiar los datos en una memoria intermedia que se asigna, lo más probable.
Otros consejos
Hmm ... ¿Qué hay rawdata
? Tal vez es un tipo const
que no se puede modificar?