Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone-返回零数据的UIImage图像_Iphone_Uiimage_Nsdata_Cgimage - Fatal编程技术网

iPhone-返回零数据的UIImage图像

iPhone-返回零数据的UIImage图像,iphone,uiimage,nsdata,cgimage,Iphone,Uiimage,Nsdata,Cgimage,我需要从字节数组创建UIImage。 下面是我创建字节数组的步骤: image = CGImageCreateWithImageInRect(aux.CGImage, imageRect); context = CGBitmapContextCreate (data[i][j], TILE_WIDTH, TILE_HEIGHT, bitsPerComponent, bitmapBytesPerRow, colorSpace,

我需要从字节数组创建UIImage。 下面是我创建字节数组的步骤:

image = CGImageCreateWithImageInRect(aux.CGImage, imageRect);
context = CGBitmapContextCreate (data[i][j], TILE_WIDTH, TILE_HEIGHT, 
                                 bitsPerComponent, bitmapBytesPerRow, colorSpace,
                                 kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);//kCGImageAlphaNoneSkipFirst);//kCGImageAlphaNone);//

CGContextDrawImage(context, CGRectMake(0, 0, TILE_WIDTH, TILE_HEIGHT), image);

data[i][j] = CGBitmapContextGetData (context);
数据变量是无符号字符

这就是我如何获取UIImage的方法:

NSData *imgData = [NSData dataWithBytes:data[i][j] length:TILE_WIDTH*TILE_HEIGHT*numberOfCompponents];
        UIImage *img = [UIImage imageWithData: imgData];
img(UIImage)保持为零

好的,这不是背景:我正在尝试创建一个像素应用程序:)。iPhone4摄像头的图像太大,所以我将图像分割成更小的图像。这样做,当需要更新像素化(触摸)区域以显示像素化效果时,我正在更新较小的图像。我需要这样做,因为在以前的测试中,它就像UIImage的更新正在杀死CPU一样。尽管如此,较小的图像现在约为80x100像素,并且更新工作并不尽可能顺利。有时,如果您将手指移动到fast,它会遗漏一些点:D。我认为使用此方法从字节数组创建UIImage比使用此方法更快:

CGImageRef cgImage = CGImageCreate(TILE_WIDTH, TILE_HEIGHT, bitsPerComponent,
                                   bitsPerPixel, bitmapBytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big, 
                                   dataProvider, NULL, false, kCGRenderingIntentDefault);
UIImage *imageToBeUpdated = [UIImage imageWithCGImage:cgImage];

是否正确?

[UIImage imageWithData:data]
解析以已知图像文件格式(例如,中的jpeg、png或gif;完整列表)显示的数据。您正在传递原始像素数据,这是不受支持的

请尝试以下操作,而不是
CGBitmapContextGetData
,以使图像脱离上下文:

CGImageRef imgRef = CGBitmapContextCreateImage(context);
UIImage *img = [UIImage imageWithCGImage:imgRef];

非常感谢。目前我正在寻找一种非常快速的方法来更新图像。因为我需要在touchMoved上更新图像,以及像素化所需的计算,这需要消耗大量资源。有没有更快的方法来更新图像?我找到了。感谢您的回复。