图形学 | 蓄势待发!说一说图片相关的那些概念

简介: 图形学 | 蓄势待发!说一说图片相关的那些概念

前言


  • 在深入理解图片底层原理的过程中,会接触到各种概念,今天我们简单梳理一下。
  • 如果能帮上忙,请务必点赞加关注,这真的对我非常重要。


目录

image.png

1. 存储形式


图像的主要存储形式分为:File、Stream、Bitmap


2. 图片分类


2.1 有损压缩 & 无损压缩


所谓损失指的是图片的质量,根据压缩过程是否损失图片质量分为两种:


  • 有损压缩(Lossy compression)

压缩过程中损失图片的一部分信息 / 质量,而这种损失是不可逆的。最常见的有损压缩手段是矢量量化,即按照一定的算法将颜色相似的一块区域合并为同一种颜色。

举例:JPEG。


  • 无损压缩(Lossless Compression)

压缩过程中优化冗余数据,而这种优化不会造成图片质量损失。

举例:PNG。


2.2  位图 & 矢量图


  • 位图(Bitmap,又称点阵图、栅格图)
  • 通过像素阵列的排列来来显示图像;
  • 像素是位图的最小单位,每个像素都有自己的颜色信息;
  • 位图缩放会是增大 / 缩小单个像素,会出现失真(锯齿)。

举例:JEPG、PNG、GIF、WebP。


  • 矢量图(Vector)
  • 通过记录图像元素的形状和颜色的算法,根据算法运算来显示图像;
  • 无限放大缩小不失真。

举例:SVG。


2.3 直接色 & 索引色


  • 直接色(Index Colour)

像素数据数值本身就代表一种颜色,例如一个 ARGB 颜色类型的数值0xFFFF0000就代表正红色。


  • 索引色(Direct Colour)

像素数据本身不代表颜色,而是一个指向颜色索引表的索引号。索引色格式适用于图像颜色类型较少的情况,相对于直接色能够大大缩小文件大小。

image.png

image.png


引用自 developer.android.com/topic/perfo… —— Android Developers


3. 色彩


3.1 色彩深度(Bit Depth)


表示像素能呈现的颜色数量,一般用数据位数表示。例如 8 bit 色彩深度,就是把每种颜色通道分为 256 种不同强度等级,所以 RGB 三种颜色通道加起来一共可以表示2242^{24}224种颜色。


3.2 色彩空间(ColorSpace)


又称色域(Color Gamut),表示像素能涵盖的色彩范围,主要有以下几种:


  • CIE XYZ


1931 年,国际照明委员会(CIE)在测得三原色的准确波长后,定义了一个 XYZ 色彩空间,第一次表示出了人类肉眼可见的色彩范围。


image.png

经过数学运算之后可以转换为这张更直观的 CIE XY 色度图:


image.png

  • sRGB

目前互联网上最常见的色域标准,大概覆盖了 35% 的CIE XYZ 色彩空间。


  • YUV

主要用于表示彩色视频的色彩空间(节省带宽,每个像素位深最大不超过 12 位,最小为 6位)


  • CMYK

主要用于彩色印刷的色彩空间。

image.png


引用自 baike.baidu.com/item/%E8%89… —— 百度百科


4. 文件格式


Editting...

GIF位深为8位,所以文件通常较小,而且支持alpha通道以及动画 Webp在等质量大小上和等大小清晰度上都占极大优势 SVG由xml描述,可以适配任何分辨率而保证图像不失真 所以图片压缩主要是针对PNG和JPEG这两种格式


png压缩采用libpng进行压缩,主要场景为编译阶段以及api层调用 jpeg压缩采用libjpeg(Android7后是)进行压缩,主要场景为api层调用

目录
相关文章
|
6月前
|
编解码 自然语言处理 开发者
复刻Sora有多难?一张图带你读懂Sora的技术路径
OpenAI发布了视频生成模型Sora,最大的Sora模型能够生成一分钟的高保真视频。同时OpenAI称,可扩展的视频生成模型,是构建物理世界通用模拟器的一条可能的路径。
|
6月前
|
算法 数据可视化 vr&ar
【图形学】探秘图形学奥秘:区域填充的解密与实战
【图形学】探秘图形学奥秘:区域填充的解密与实战
53 0
|
3月前
|
Java 程序员
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
40 5
|
4月前
|
设计模式 算法 搜索推荐
代码之舞:探索编程艺术与技术的融合
在数字化时代的浪潮中,编程已不仅仅是技术操作的堆砌,更是一种艺术的体现。本文将通过个人的技术感悟,探讨如何将创造性思维融入编程实践,以及这种融合如何影响软件开发的未来。从算法美学到设计模式的巧妙应用,我们将一同见证编码背后隐藏的艺术之美,并思考这一趋势对程序员职业发展的意义。
42 0
|
2月前
|
算法 网络协议 定位技术
代码之舞:编程艺术与实践的融合
编程,一种现代魔法,它以代码为咒语,召唤出数字世界的奇迹。在这篇文章中,我们将穿梭于编程的艺术与实践之间,探索如何通过技术提升效率、解决问题,并在此过程中寻找乐趣。从基础的数据结构到复杂的算法设计,每一次键盘敲击都是对未知的征服和对创造力的挑战。
32 1
|
3月前
|
算法 前端开发 JavaScript
编程之舞:从代码到艺术的演变
【8月更文挑战第27天】在数字世界的舞台上,代码不仅仅是冷冰冰的指令序列,它们像音符一样组合成旋律,编织出功能与美的交响曲。本文将带您领略编程的艺术性,探索如何通过代码实现技术与美学的和谐统一。
|
5月前
|
设计模式 算法 程序员
代码的诗意:技术与艺术的交织
【6月更文挑战第28天】在数字世界的构建中,编程往往被视为一项枯燥且逻辑性强的技术活动。然而,当我们深入探究时,会发现编程不仅涉及逻辑和算法,还蕴含着一种独特的艺术美。本文将探讨编程如何融合技术性和艺术性,揭示代码背后的诗意及其对创造性思维的促进作用。通过个人的技术感悟,我们将看到,编程不仅是科技的产物,也是人类创造力的展现。
38 1
|
4月前
|
机器学习/深度学习 算法 搜索推荐
代码之舞:探索编程艺术的深层美学
在数字世界的舞台上,编程不仅是技术的体现,更是艺术的一种展现。本文将深入探讨编程背后的艺术性,从算法的优雅到代码的简洁,揭示如何通过技术实现创造性思维的飞跃。我们将一起走进编程的世界,感受它在解决问题过程中所展现出的独特魅力和美学价值。
|
6月前
|
Python
探索电学的奥秘:从基础到应用
探索电学的奥秘:从基础到应用
55 1
|
6月前
|
设计模式 算法 开发者
代码之美:探索编程艺术与实践的交汇点
【4月更文挑战第2天】 在数字世界的构建中,代码不仅仅是一种工具,它亦是艺术家手中的画笔。本文旨在探讨编程作为一种技术和艺术相结合的领域,揭示那些隐藏在代码背后的美学原则和创造力。我们将从编程的基础出发,逐步深入到设计模式、算法优雅性以及代码的可读性和维护性,最终探讨如何通过技术实现创新并解决问题。文章的目的是为那些渴望在技术实践中寻找创造性和美感的开发者提供灵感和指导。
下一篇
无影云桌面