gpt4 book ai didi

iPhone - UIImage imageWithData 返回 nil

转载 作者:行者123 更新时间:2023-12-03 20:56:09 25 4
gpt4 key购买 nike

我需要从字节数组创建 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];

我说得对吗?

最佳答案

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

尝试使用此方法而不是CGBitmapContextGetData来从上下文中获取图像:

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

关于iPhone - UIImage imageWithData 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com