iPhone - UIImage imageWithData 返回 nil

Posted

技术标签:

【中文标题】iPhone - UIImage imageWithData 返回 nil【英文标题】:iPhone - UIImage imageWithData returning nil 【发布时间】:2011-02-27 19:02:43 【问题描述】:

我需要从一个字节数组创建一个 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) 保持为零。

好的,这不是背景:我正在尝试创建一个像素化应用程序:)。来自 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];

我说的对吗?

【问题讨论】:

【参考方案1】:

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

试试这个而不是 CGBitmapContextGetData 来让图像脱离上下文:

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

【讨论】:

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

以上是关于iPhone - UIImage imageWithData 返回 nil的主要内容,如果未能解决你的问题,请参考以下文章

iPhone - 将 UIImage 添加到文件夹

Iphone 将 IplImage 转换为 UIImage 图像变蓝

从 iPhone 相机保存和裁剪 UIImage

iPhone - UIImage imageWithData 返回 nil

左侧单点触控 iphone 上带有圆角的 UIImage

iPhone 编程:如何使 UIImageView 中的 UIImage 以实际大小显示?