繁体   English   中英

使用SDWebImage处理非常大的图像下载

[英]Handling download of very large images with SDWebImage

我使用SDWebImage将图像异步下载到我的UIImageView 收到的大多数图像都是可接受的大小,可以轻松下载,并设置为UIImageView

但有时候,URL上的源图像分辨率非常高(相对于我的imageView - 60x60的大小)。 在这种情况下,永远不会设置图像。 有时我的应用程序崩溃,有时,没有任何反应(图像保持nil ),并且在极少数情况下我收到类似的错误: Unable to allocate 400000 bytes of memory (我不完全确定确切的错误日志,我道歉) 。

例如, 从Pinterest的站点本身的Pinterest的图标的图像是巨大的(10000×10000)。 我的imageView永远无法绘制此图像。 目前,我已经硬编码用这个替换图像,但我知道这是不好的做法。 此外,这只是一种情况,可能会有无限多的图像,这可能会影响用户体验。

我该如何处理这类案件?

只需检查您收到的图像大小,当大小远大于您的图像视图接受的大小时,您可以调整图像大小,此处链接用于调整图像链接的大小。 调整大小后,您可以将其放在imageview中。 希望对你有所帮助。

我建议你使用这个AsyncImageView 我已经习惯了,它可以创造奇迹。 要调用此API:

ASyncImage *img_EventImag = alloc with frame;
NSURL *url = yourPhotoPath;
[img_EventImage loadImageFromURL:photoPath];
[self.view addSubView:img_EventImage];

它与使用UIImageView相同。 简单,它可以为您完成大部分工作。 AsyncImageView包含UIImageView上的一个简单类别,用于在iOS上异步加载和显示图像,以便它们不会锁定UI,以及用于更高级功能的UIImageView子类。 AsyncImageView适用于URL,因此可以与本地或远程文件一起使用。

加载/下载的图像缓存在内存中,并在发生内存警告时自动清除。 AsyncImageView独立于UIImage缓存运行,但默认情况下,位于应用程序包根目录中的任何图像都将存储在UIImage缓存中,从而避免重复缓存的图像。

该库还可用于独立于UIImageView加载和缓存图像,因为它提供对底层加载和缓存类的直接访问。

SDWebImage是开源库。 将源添加到项目中并在SDWebImageDownloader.m中附加大小检查

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM