本地图片加载卡顿

Author Avatar
Rzk 5月 12, 2018
  • 在其它设备中阅读本文章

当列表中加载太多的高清大图后,流畅度就会大大降低,本文将试图改善这一问题.

#本地大图加载卡顿

问题

在项目iphone_webServer中,网页上传众多大图后,每个图片的显示,占用诸多内存,导致卡顿.

e.g.
以一张尺寸为900 × 600的图片为例,图片共有像素数:
900 × 600 = 540,000像素(Pixel)。
如果图片是RGB 色彩模式,占用的内存是:
900 × 600 × 3 = 1,620,000 字节(bytes).
后面”× 3”表示每个像素内RGB 颜色的信息需要3字节,也是24比特(bit)。 
也可以说每个像素中 3 RGB值,每一个RGB值需要一个 8 比特,也是一个字节,总计24个比特。

方案

本地文件读取后,生成小图片加载到UIImageView上

代码

// 小图宽高
CGFloat height = self.height;
CGFloat width = img.size.width * height / img.size.height;

// 生成小图片
CGSize newSize = CGSizeMake(width, height);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[img drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *smallImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Over