1

ピクセル値(チャンネル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はunsignedchar型のデータバッファです

4

2 に答える 2

4

割り当てられたバッファの終わりをオーバーランしている可能性があり、そのためアクセス違反が発生しています。これは、割り当ての計算が間違っているか、rawDataポインターのタイプが間違っていることを意味している可能性があります。

ロードされたUIImageの生データにアクセスしている場合は、読み取り専用のメモリにマッピングされている可能性があります。ほとんどの場合、割り当てたバッファにデータをコピーする必要があります。

于 2009-08-30T06:24:19.000 に答える
0

うーん...なにrawdata?多分それはconstあなたが変更できないタイプですか?

于 2009-08-30T06:16:36.973 に答える