서명되지 않은 숯을 늘리거나 줄이는 방법?
-
20-09-2019 - |
문제
나는 값을 일정량으로 증가/감소시켜 픽셀 값 (채널 RGBA 당 8 비트)을 수정하려고합니다. Objective-C 또는 C에서 어떻게 할 수 있습니까? 다음 코드는 "오류 : exc_bad_access"매번.
// 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;
}
그리고 심지어
// 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;
}
사이드 노트 : RawData는 유형 부호없는 숯의 데이터 버퍼입니다
해결책
할당 된 버퍼의 끝을 넘어서는 것이 가능하므로 액세스 위반을받는 이유입니다. 그것은 아마도 당신의 수학이 할당에서 잘못되었거나 당신의 RawData 포인터가 잘못된 유형 일 가능성이 높습니다.
로드 된 Uiimage의 원시 데이터에 액세스하는 경우 메모리 읽기 전용에 매핑 될 수 있습니다. 데이터를 할당 한 버퍼에 데이터를 복사해야합니다.
다른 팁
흠 ... 뭐야 rawdata
? 어쩌면 그것은 아마도 const
수정할 수없는 유형?
제휴하지 않습니다 StackOverflow