gpt4 book ai didi

iPhone UIImage initWithData 失败

转载 作者:行者123 更新时间:2023-12-03 21:11:51 53 4
gpt4 key购买 nike

我正在尝试编写一个异步图像下载器。我使用 NSURLConnection 将数据获取到 NSMutableData 中,并在完成后使用该数据来初始化 UIImage。

我检查了字节,它正确下载了整个图像(至少正确的字节数),但是;当我打电话时

[UIImage imageWithData:data]

然后检查图像的属性,宽度为零,高度为垃圾数字,事实上,无论图像是什么,都是相同的数字。我尝试使用一堆不同的图像,png,jpg,不同的网址,它总是完全下载图像,但 UIImage 无法使用该数据进行初始化。我在这里可能做错了什么?

谢谢。

代码确实如您所期望的那样:

连接委托(delegate):

-(void)connectionDidFinishLoading:(NSURLConnection*)theConnection {
[[ImageManager sharedInstance] dataDownloadedBy:self]; }

图像管理器:

-(void)dataDownloadedBy:(WebConnection *)connection{    
WebImage *image = [[WebImage alloc] initWithLink:connection.url];
[image setImageFromData:connection.data];
[images addObject:image];
[connection release];}

网络图像:

-(void)setImageFromData:(NSMutableData *)data{
image = [[UIImage alloc] initWithData:data];}

最佳答案

首先,我确定 UIImage 不会使用垃圾数据进行初始化。构造函数 initWithData 分析数据以确定文件格式。如果您的数据已损坏,则返回的图像将为零。首先检查一下。

-(void)dataDownloadedBy:(WebConnection *)connection{    
WebImage *image = [[WebImage alloc] initWithLink:connection.url];
[image setImageFromData:connection.data];
if (image.image != nil) { [images addObject:image]; }
[connection release];
}

其次,请确保在下载过程中附加数据。回调方法如下:

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[self.receivedData appendData:data];
}

最后,您的代码必须绝对包含第二种情况:下载失败。

- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
[connection release];
}

您的问题描述缺少一些重要的代码片段。

Apple 的 URLCache 演示是一个非常好的项目,可以帮助您了解异步图像下载。 http://developer.apple.com/iphone/library/samplecode/URLCache/Introduction/Intro.html

希望这对您有帮助!

关于iPhone UIImage initWithData 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685563/

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