ios 从assets加载图片_iOS 图片加载和处理

本文介绍了iOS中图片加载的流程,包括加载、解码和渲染,强调了解码对内存和CPU的影响。针对UITableView和UICollectionView中滑动显示图片导致的性能问题,提出了降采样、异步处理和使用Image Asset Catalogs三种优化策略。通过分析WWDC内容,讨论了线程爆炸现象,深入理解GCD和操作系统如何协同处理并发任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、图片显示

图片的显示分为三步:加载、解码、渲染。解码和渲染是由 UIKit 进行,通常我们操作的只有加载。

11685418e70830e811514bb740caca5b.png

以 UIImageView 为例。当其显示在屏幕上时,需要 UIImage 作为数据源。UIImage 持有的数据是未解码的压缩数据,能节省较多的内存和加快存储。

当 UIImage 被赋值给 UIImage 时(例如 imageView.image = image;),图像数据会被解码,变成 RGB 的颜色数据。

解码是一个计算量较大且需要 CPU 来执行的任务;并且解码出来的图片体积与图片的宽高有关系,而与图片原来的体积无关。其体积大小可简单描述为:宽 * 高 * 每个像素点的大小 = width * height * 4bytes。

8e41b0c7bcbff797f847579f45b51af3.png

图像解码操作会造成什么问题?

以常见的 UITableView 和 UICollectionView 为例,假如在使用一个多图片显示的功能:在上下滑动显示图片的过程中,我们会在 cellForRow 的方法加载 UIImage 图片、赋值给 UIImageView,相当于在主线程同时进行 IO 操作、解码操作等࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值