拾忆

图片缓存优化

1.利用图片压缩工具进行无损压缩(imageOptim,PNGOUTZopfliPngcrush,AdvPNG, extended OptiPNGJpegOptim, jpegrescan, jpegtran, and Gifsicle.)

压缩原理,去除图片中一些无用的信息(metadata,注释等),一般能够压缩20%~40%等。


2.在程序中,看具体情况需要初始化uiimage。

uiimage 一般用imageNamed初始化,但是第一次用这个方法会将图片放置内存当中,然后后面会根据名字从内存中获取。这样一般就是牺牲内存来使效率更大化。如果使用频率多,而且图片占用内存不是很大,可以使用这个。

但是很多都是一次性的,建议使用读取文件的方式获取图片[UIImage imageWithContentsOfFile],这样就不会占用内存,但是读取文件意味着io操作,就是会占用一定的cpu,但是对当下的手机来说不算事。

综上所述,请根据具体情况初始化uiimage。

3.利用代码缩放图片。

  1. - (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{    

  2.     // 创建一个bitmap的context    

  3.     // 并把它设置成为当前正在使用的context    

  4.     UIGraphicsBeginImageContext(size);    

  5.     // 绘制改变大小的图片    

  6.     [img drawInRect:CGRectMake(0, 0, size.width, size.height)];    

  7.     // 从当前context中创建一个改变大小后的图片    

  8.     UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();    

  9.     // 使当前的context出堆栈    

  10.     UIGraphicsEndImageContext();    

  11.     // 返回新的改变大小后的图片    

  12.     return scaledImage;    

  13. }  



评论
© 拾忆 | Powered by LOFTER