Question

Je suis en train de modifier les valeurs de pixel (8 bits par canal) par RVBA numériquement augmentant / diminuant les valeurs d'un certain montant. Comment puis-je faire en Objective-C ou C? Le code suivant génère un " Erreur: EXC_BAD_ACCESS ." À chaque fois

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

}

et même

// 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 est un tampon de données de type unsigned char

Était-ce utile?

La solution

Il est possible que vous la fin de dépassement votre tampon alloué, et c'est la raison pour laquelle vous obtenez la violation d'accès. Cela signifie plus probable que votre calcul est faux dans l'attribution ou le pointeur rawData est du mauvais type.

Si vous accédez aux données brutes d'un UIImage chargé, il peut être mis en correspondance dans la mémoire en lecture seule. Vous auriez besoin de copier les données dans un tampon qui vous avez alloué, le plus probable.

Autres conseils

Hmm ... Qu'est-ce rawdata? Peut-être qu'il est un type de const que vous ne pouvez pas modifier?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top