Domanda

sto cercando di modificare i valori dei pixel (8 bit per canale RGBA) numericamente aumentando / diminuendo i valori di una certa quantità. Come posso fare questo in Objective-C o C? Il seguente codice genera un " Errore: EXC_BAD_ACCESS ". Everytime

// 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 anche

// 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 è un buffer di dati di tipo char unsigned

È stato utile?

Soluzione

E 'possibile che si sta sorpasso alla fine del buffer allocato, ed è per questo che stai ricevendo la violazione di accesso. Che molto probabilmente significa che la matematica è sbagliato nella ripartizione, o il puntatore rawData è del tipo sbagliato.

Se si accede ai dati grezzi di un UIImage caricato, potrebbe essere attribuita a memoria di sola lettura. Avresti bisogno di copiare i dati in un buffer che assegnato, più probabile.

Altri suggerimenti

Hmm ... Cosa c'è rawdata? Forse è un tipo const che non è possibile modificare?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top