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

¿Fue útil?

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top