我需要从字节数组创建一个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);
数据变量是unsigned char。
这就是我尝试获取UIImage的方式:
NSData *imgData = [NSData dataWithBytes:data[i][j] length:TILE_WIDTH*TILE_HEIGHT*numberOfCompponents];
UIImage *img = [UIImage imageWithData: imgData];
img(UIImage)仍为零。
好的,这不是背景:我正在尝试创建一个pixelate应用程序:)。来自iPhone 4相机的图像尺寸太大,因此我将图像分割成较小的图像。这样做,当需要更新像素化(触摸)的区域以便显示像素化效果时,我正在更新较小的UIImage。我需要这样做,因为在之前的测试中,它像UIImage的更新一样扼杀CPU。尽管如此,较小的图像现在大约为80x100像素,并且更新效果不尽如人意。有时,如果你快速移动手指,它会错过一些点:D。我认为使用此方法从字节数组创建UIImage比这个更快:
CGImageRef cgImage = CGImageCreate(TILE_WIDTH, TILE_HEIGHT, bitsPerComponent,
bitsPerPixel, bitmapBytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big,
dataProvider, NULL, false, kCGRenderingIntentDefault);
UIImage *imageToBeUpdated = [UIImage imageWithCGImage:cgImage];
我说错了吗?
答案 0 :(得分:3)
[UIImage imageWithData:data]
解析已知图像文件格式的数据(例如jpeg,png或gif; documentation中的完整列表。你传递的是原始像素数据,不支持
尝试使用此代替CGBitmapContextGetData
来获取上下文中的图像:
CGImageRef imgRef = CGBitmapContextCreateImage(context);
UIImage *img = [UIImage imageWithCGImage:imgRef];