zoukankan      html  css  js  c++  java
  • 图片加载原理

    图片加载 是有 CPU GPU 联合协作的

    CPU 是 用来计算 视图创建 视图frame 图片解码(将压缩的图片数据解码成未压缩的位图形式,为什么要压缩图片,因为图片数据太大,实际上不管是JPEG还是PNG 都是一种压缩的位图图形格式,只不过PNG 图片是无损压缩,并且支持alpha通道。而JPEG图片则是有损压缩,可以指定0 - 100%的压缩比。然而,将磁盘中图片渲染到屏幕之前,必须要得到图片的原始像素数据,才能让GPU渲染,GPU渲染流程 :

    1.GPU获取图片的坐标

    2.将坐标交给顶点着色器

    3.将图片光栅化(获取图片对应屏幕上的像素点)

    4.片元着色器计算(计算每个像素点的最终显示颜色值)

    5.从帧缓冲区(Frame buffer)中渲染到屏幕上。

    图片解压缩的原理:

    当未解压缩的图片要渲染到屏幕时,系统会在主线程对图片进行解压缩,而如果图片已经解压缩了,系统就不会再对图片进行解压缩。因此,要在子线程提前对图片进行强制解压缩即可

    而强制解压缩的原理就是对图片进行重新绘制,得到一张新的解压缩后的位图。核心函数是

    CGBitmapContentCreate 创建一个位图上下文

    CGContextDrawImage 将原始数据绘制到上下文中

     CGBitmapContextCreateImage 创建一张新的解压缩后的位图

     开源框架 YYImage ,SDWebImage 都是这个原理

  • 相关阅读:
    thinkPHP入门之二
    thinkPHP入门
    斐波那契数列,冒泡排序,选择排序,数组去重
    jquery-懒加载插件
    本地存储之cookie
    javascript的快速排序法
    [luogu2165 AHOI2009] 飞行棋 (枚举)
    [luogu2576 SCOI2010] 幸运数字 (容斥原理)
    [luogu2587 ZJOI2008] 泡泡堂 (贪心)
    [luogu2602 ZJOI2010] 数字计数 (数位dp)
  • 原文地址:https://www.cnblogs.com/pp-pping/p/11451768.html
Copyright © 2011-2022 走看看