美文网首页
图片是如何显示的

图片是如何显示的

作者: 程序员学哥 | 来源:发表于2023-03-13 15:44 被阅读0次

图片是如何显示的

在讲解如何选择图片格式之前,我感觉有必要先了解下,图片是如何展示的。如果我们要展示一张图片,一般步骤是这样的:

/// Assets.xcassets中的图片,不需要后缀
let image = UIImage(named: "icon")
let imageView = UIImageView(frame: rect)
imageView.image = image
view.addSubview(imageView)
复制代码

运行程序,我们就可以在指定位置看到这个icon。看似简单的代码背后隐藏了很多细节工作。一张图片的展示,从代码执行到展示出来大致经历了这些步骤:

1. 加载图片

  • 从磁盘中加载一张图片;

  • 然后将生成的 UIImage 赋值给 UIImageView

  • 接着一个隐式的 CATransaction 捕获到了 UIImageView 图层树的变化;

  • 分配内存缓冲区用于管理文件 IO 和解压缩操作,将文件数据从磁盘读到内存中;

2. 图片解码(解压)

  • 将压缩的图片数据解码成未压缩的位图形式,这是一个非常耗时的 CPU 操作,默认在主线程进行;

3. 图片渲染

  • Core AnimationCALayer使用解压(解码)的位图数据渲染 UIImageView 的图层;

  • CPU计算好图片的Frame,对图片解压之后,就会交给GPU来做图片渲染渲染流程;

  • GPU获取获取图片的坐标,将坐标交给顶点着色器(顶点计算),将图片光栅化(获取图片对应屏幕上的像素点),片元着色器计算(计算每个像素点的最终显示的颜色值);

  • 从帧缓存区中渲染到屏幕上;

这其中有个关键步骤是图片解码。那为什么要解码呢,这是因为我们平常使用的图片一般为了节约空间都会经过一些压缩算法进行封装,而使用时屏幕要精确的渲染到每个像素点,这就需要把压缩的图片解码展开,便于系统处理。

相关文章

  • UIImageView

    UIImageView 用UIImageView来显示图片,其contentMode属性控制图片如何显示,默认值是...

  • UImageView显示图片

    用于显示图片视图 属性:image: UIImage类型,用于设置要显示的图片。如何构建UIImage类型的对象...

  • IOS中图片显示原理以及如何提高系统性能

    一.图片显示流程 IOS中一张图片如何显示在屏幕上的呢?大致流程如下: 图片显示通常是CPU与GPU协同合作完成的...

  • iOS-什么是离屏渲染?

    图片是如何显示在屏幕中的? 在iOS开发中,我们使用UIImage(model)获取图片数据,常见的图片格式包括....

  • Vue 图片加载失败显示默认图片的方法

    项目中经常会遇到图片加载失败需要显示默认图片的场景,那么如何在图片src资源加载失败显示出默认的图片呢? 方法一:...

  • 镜像图片

    简介 本文介绍如何镜像图片以及100%拉伸显示图片背景 代码 100%拉伸平铺显示:background: url...

  • Android大尺寸图片加载问题

    对于大尺寸图片加载,如何正常加载显示且不发生OOM? 图片采样,应用场景:图片全部显示在控件上 图片按区域加载,应...

  • 21_显示YUV图片&视频

    一、显示YUV图片 显示 YUV 图片和显示 BMP 图片的大致流程是一样的。显示 BMP 图片我们可以直接获取到...

  • iOS开发中NSOperation线程间通信?下载图片?

    『导言』 iOS开发中如何用NSOperation进行快速的下载图片,并且图片显示?其中子线程和主线程如何通信? ...

  • iOS-图片方向异常

    使用iPhone或者iPad拍照后上传图片,发现在电脑端显示的图片方向各异,而在手机上显示正常的问题如何避免 简单...

网友评论

      本文标题:图片是如何显示的

      本文链接:https://www.haomeiwen.com/subject/rfgqrdtx.html