Comment augmenter / diminuer une Unsigned Char?
-
20-09-2019 - |
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
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?