IOS中图片处理

图片库的一般操作核心都是:

1,开启子线程

2,缓存

 

一、图片加载的过程

   (1)假设我们使用+imageWithContentsOfFile:方法从磁盘加载图片,这个时候图片并没有解压缩

   (2)然后将生成的UIImage赋值给了UIImageView

   (3)在图片要渲染到界面上时步骤:

            1.分配内存缓冲区用于管理文件和解压缩操作

            2.将文件数据从磁盘读到内存中

            3.将压缩的图片数据解码成未压缩的位图形式,这是一个非常耗时的cpu操作

            4.最后Core Animation使用未压缩的位图数据渲染UIIMageView的图层

 

系统把压缩图片这个耗时操作放在了主线程,影响性能,所以我们需要想一想能否把这个耗时操作放到子线程中去,由于

当未解压缩的图片将要渲染到屏幕时,系统会在主线程对图片进行解压缩,而如果图片已经解压缩了,系统就不会再对图片进行解压缩,

因此解决方案是 在子线程提前对图片进行强制解压缩

具体实现

1,使用 CGBitmapContextCreate 函数创建一个位图上下文

2, 把图片用 CGContextDrawImage() 绘制到画布上,然后把画布的数据取出来当作图片。这也是常见的网络图片库的做法

3,CGBitmapContextCreateImage创建一个新的解压后的位图

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值