我试图通过在数值上增加/通过一定量的减小值来修改像素值(每个通道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型的数据缓冲器

有帮助吗?

解决方案

这有可能是你超越你分配的缓冲区的结尾,这就是为什么你要访问冲突。这很可能意味着你的数学是错误的配置,或者您RAWDATA指针类型错误的。

如果你正在访问加载的UIImage的原始数据,它可能被映射到内存为只读。你需要将数据复制到您分配的,最有可能的一个缓冲。

其他提示

嗯......什么是rawdata?也许这是你不能修改const类型?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top