uiimage亮度调节

时间:2011-02-14 19:09:10

标签: iphone objective-c sdk uiimage brightness

我正在开发一个应用程序,我有一个UIImageView,用户可以自由移动,缩放和旋转手势(我正在使用Apple的Touches代码),然后他可以通过使用UISlider来改变亮度。亮度调整方法适用于所有其他图像视图,但不适用于我需要移动和播放的方法,因为当UIImageView开始滑动时,它开始改变但是在一秒钟之后应用程序崩溃而不在控制台中留下任何信息,顺便说一下这里是代码,其中jk是可移动UIImageView的UIImage,而imgVback是实际可移动的UIImageView:

-(void)doImageStuff:(int)value{
UIImage *jk = imageK;
CGImageRef img=jk.CGImage;
CFDataRef dataref=CopyImagePixels(img);
UInt8 *data=(UInt8 *)CFDataGetBytePtr(dataref);
int length=CFDataGetLength(dataref);
for(int index=0;index<length;index+=4){
    // BRIGHTNESS
    for(int i=0;i<3;i++){
        if(data[index+i]+value<0){
            data[index+i]=0;
        }else{
            if(data[index+i]+value>255){
                data[index+i]=255;
            }else{
                data[index+i]+=value;
            }
        }
    }


}
size_t width=CGImageGetWidth(img);
size_t height=CGImageGetHeight(img);
size_t bitsPerComponent=CGImageGetBitsPerComponent(img);
size_t bitsPerPixel=CGImageGetBitsPerPixel(img);
size_t bytesPerRow=CGImageGetBytesPerRow(img);
CGColorSpaceRef colorspace=CGImageGetColorSpace(img);
CGBitmapInfo bitmapInfo=CGImageGetBitmapInfo(img);
CFDataRef newData=CFDataCreate(NULL,data,length);
CGDataProviderRef provider=CGDataProviderCreateWithCFData(newData);
CGImageRef newImg=CGImageCreate(width,height,bitsPerComponent,bitsPerPixel,bytesPerRow,colorspace,bitmapInfo,provider,NULL,true,kCGRenderingIntentDefault);
[imgVback setImage:[UIImage imageWithCGImage:newImg]];
CGImageRelease(newImg);
CGDataProviderRelease(provider);

}

我首先认为将此与移动/缩放/旋转动作相结合是错误的,但即使我没有向UIImageView添加任何手势,它仍然无法正常工作

我该怎么做?

0 个答案:

没有答案