从网络上下载一张图片并在UIImageView中显示它是相当容易的。然而,这需要在将图像显示给用户之前完全下载图像,完全破坏了渐进式JPEG(和PNG)图像。
在传输过程中如何呈现部分下载的图像?我想SDK应该有一些回调函数来更新图像,但我找不到这样的函数。在当前的iOS SDK中是否可能实现这一点?
从网络上下载一张图片并在UIImageView中显示它是相当容易的。然而,这需要在将图像显示给用户之前完全下载图像,完全破坏了渐进式JPEG(和PNG)图像。
在传输过程中如何呈现部分下载的图像?我想SDK应该有一些回调函数来更新图像,但我找不到这样的函数。在当前的iOS SDK中是否可能实现这一点?
NYXProgressiveImageView
的类,是UIImageView
的子类。NYXProgressiveImageView * imgv = [[NYXProgressiveImageView alloc] init];
imgv.frame = CGRectMake(0, 0, 320, 480);
[imgv loadImageAtURL:[NSURL URLWithString:@"http://yourimage"]];
[self.view addSubview:imgv];
[imgv release];
另外,一个好的选择是将您的图像保存为隔行扫描
,以便以低质量加载并随着下载而改进。如果图像没有隔行扫描,则从顶部到底部加载。
let imageView = CCBufferedImageView(frame: ...)
if let url = NSURL(string: "http://example.com/yolo.jpg") {
imageView.load(url)
}
你尝试过在 didReceiveData 被调用时部分渲染 UIImage 吗?就像这样...
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//TODO: add some error handling in case the image could not be created
UIImage *img=[UIImage imageWithData:data];
if (img) {
self.imageView.image=img;
}
}
ImageIO.framework
能够做到这一点,甚至可以处理不同类型的文件。 - Grzegorz Adam HankiewiczNYXProgressiveImageView
不会加载渐进式 JPEG 文件的低质量部分。只有当全部下载完成后,它才会完整地显示图像。 - nickcheng