문제

나는 값을 일정량으로 증가/감소시켜 픽셀 값 (채널 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 수정할 수없는 유형?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top