以下是我从这个网站复制并稍微修改的代码,因为原始代码无法编译。我想操作字节数组以进行边缘检测和最终进行简单的颜色更改,但首先我想让基本代码能够正常工作。目前,系统已经成功编译和运行。它在屏幕上显示了一只糟糕的大象。当我触摸图像时,它会消失。逐步调试显示imageWithData的结果为0x0。我尝试使用png和bmp格式,结果相同。
有什么线索可以告诉我我做错了什么?!
ImageViewDrawable的定义如下:
@interface ImageViewDrawable : UIImageView
// I am using the following code to initialize this ImageView
ImageViewDrawable * uiv = [[ImageViewDrawable alloc] initWithImage:[UIImage imageNamed:@"ele.png"] ];
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// get and work on pixel data
NSData* pixelData = (NSData*) CGDataProviderCopyData(CGImageGetDataProvider(self.image.CGImage));
char* bytes =[pixelData bytes];
// Take away the red pixel, assuming 32-bit RGBA
for(int i = 0; i < [pixelData length]; i += 4) {
bytes[i] = bytes[i]; // red
bytes[i+1] = bytes[i+1]; // green
bytes[i+2] = bytes[i+2]; // blue
bytes[i+3] = bytes[i+3]; // alpha
}
// convert pixel back to uiiimage
NSData* newPixelData = [NSData dataWithBytes:bytes length:[pixelData length]];
char * bytes2 =[pixelData bytes];
UIImage * newImage = [UIImage imageWithData:newPixelData] ;
[self setImage: newImage ];
}