質問

私は数値的に一定量の値を減少/増加させることによって、ピクセル値(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はunsigned char型のデータバッファである

役に立ちましたか?

解決

それはあなたの割り当てられたバッファの最後をオーバーランしている可能性があります、そしてあなたがアクセス違反を取得している理由です。それは最も可能性の高いあなたの数学が割り当てで間違っている、またはあなたの生データポインタが間違った型であることを意味します。

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

他のヒント

うーん... rawdataは何ですか?多分それはあなたが変更することはできませんconstタイプですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top