JPEG格式详解Baseline、Progressive的区别

在这里插入图片描述

文章目录

  • JPEG的简介
    • 压缩质量/压缩比率
    • 色彩空间
    • 基线和渐进
    • 子采样
    • 存储选项
  • 基线和渐进
    • 基线格式
    • 渐进格式:
  • 子采样
    • 4:4:4(无损)
    • 4:2:2
    • 4:2:0

JPEG的简介

JPEG(Joint Photographic Experts Group)是一种常见的图像压缩格式,它采用有损压缩方法以减小文件大小。在保存JPEG格式的图片时,有一些常见的选项和参数,它们可以影响图像的质量和文件大小。以下是一些常见的保存方式及其区别:

压缩质量/压缩比率

质量: JPEG图像可以以不同的质量级别保存,通常在0到100的范围内,其中0表示最差质量,100表示最佳质量。较高的质量级别通常会产生更大的文件大小,但图像质量更高。
压缩比率: 有些图像编辑软件使用压缩比率而不是质量级别。压缩比率越高,文件大小越小,但图像质量也相应降低。

色彩空间

JPEG支持不同的色彩空间,如RGB和YCbCr。通常情况下,RGB适用于彩色图像,而YCbCr适用于亮度和色度分离的图像,例如照片。选择适当的色彩空间可以在保持图像质量的同时降低文件大小。

基线和渐进

基线(Baseline): 这是标准的JPEG格式,图像一次性加载完整。适用于网络传输。
渐进(Progressive): 图像在加载时逐渐呈现,从模糊到清晰。适用于逐渐加载的环境,但文件大小可能会稍大一些。

子采样

YCbCr色彩空间中的色度分量(Cb和Cr)可以使用不同的子采样率。常见的子采样率包括4:4:4(无损)、4:2:2和4:2:0。4:2:0是最常见的,其中色度分量的水平和垂直分辨率都比亮度分量低,从而减小文件大小。

存储选项

一些软件可能提供额外的选项,如存储EXIF信息、ICC配置文件、缩略图等。这些选项通常不直接影响图像质量,但可能会影响文件大小和图像的其他方面。选择保存JPEG图像时,您需要权衡图像质量和文件大小之间的关系,并根据具体的用途选择适当的设置。

基线和渐进

基线格式

在基线格式下,图像一次性加载完整,从上到下一行一行地加载。每一行的加载过程是逐行的,整个图像将按照从上到下、从左到右的顺序加载。这就意味着,当您查看图像时,当速度慢时图像可能从上往下逐渐显示,但是图像一直是清晰的。

渐进格式:

在渐进格式下,图像以一种逐渐呈现的方式加载。一开始,您可能会看到一个模糊的图像,然后逐渐变得清晰。图像的加载是通过分层的方式完成的,从最粗糙的外观到最终的清晰图像。这样的加载方式使得在图像加载的早期阶段就能看到整体轮廓,而不需要等待整个图像加载完成。

子采样

YCbCr(Luma, Chroma Blue, Chroma Red)色彩空间是一种用于图像和视频处理的颜色表示方法,其中包含亮度(Y)和两个色度分量(Cb和Cr)。这种颜色表示方法的使用是为了更好地符合人眼对图像的感知,同时减小数据量。

子采样率涉及到对色度分量的采样方式,以降低文件大小。让我详细解释一下:

4:4:4(无损)

在这种子采样率下,亮度(Y)、蓝色色度(Cb)和红色色度(Cr)的水平和垂直分辨率都是相同的,没有任何采样。这意味着每个像素都有完整的亮度和色度信息,但同时也导致了较大的数据量。这是一种无损的子采样方式。

4:2:2

在4:2:2的子采样率下,亮度分量(Y)的水平分辨率和垂直分辨率与原图像相同,而色度分量(Cb和Cr)的水平分辨率减半。这意味着每两个像素共享一组色度信息。这种子采样方式相对于4:4:4减小了数据量,同时保留了相对较高的图像质量。

4:2:0

4:2:0是最常见的子采样率,尤其在视频和图像压缩中广泛使用。在这种子采样率下,亮度分量(Y)的水平和垂直分辨率与原图像相同,而色度分量(Cb和Cr)的水平和垂直分辨率都减半。这意味着每四个像素共享一组色度信息。这种方式可以显著减小数据量,同时在许多情况下对图像质量的影响相对较小。


结束语
Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/307900.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

逐步分解,一文教会你如何用 jenkins+docker 实现主从模式

jenkins 主从模式想必大家都不陌生,大家在学习过程中为了学习方便都在自己本地搭建了 jenkins 环境,然后通过 javaweb 方式实现,对于 docker 下实现主从模式大家好像兴趣挺大。 今天就通过这篇文章给大家讲讲怎么玩,希望对大家有帮…

共享wifi项目如何加盟?

共享wifi贴项目如何加盟呢?具体的途径在哪里,费用是多少呢?今天小编就来一次性同你讲清楚。 我们先来讲一下共享wifi贴的加盟方法。 首先,找到共享wifi的官方渠道在点击右上角,根据页面上的信息填写资料。 然后&…

Python学习之路-Hello Python

Python学习之路-Hello Python Python解释器 简介 前面说到Python是解释型语言,Python解释器的作用就是用于"翻译"Python程序。Python规定了一个Python语法规则,根据该规则可编写Python解释器。 常见的Python解释器 CPython:官方…

如何在linux下制作静态库和动态库

目录 静态库(.a)制作静态库如何使用静态库 动态库(.so)制作动态库如何使用动态库(.so) 静态库(.a) 静态库顾名思义是静态的,即程序编译链接时,会把静态库的代码链接到可执行文件中。运行时不需要静态库(将静态库删了也能运行)。相…

日志级别(因设置错误级别日志导致宕机)

日志等级 All:最低等级的,用于打开所有日志记录. Trace:是追踪,就是程序推进一下. Debug:用于调试或者开发阶段 Info:消息在粗粒度级别上突出强调应用程序的运行过程. Warn:输出警告及warn以下级别的日志. Error:输出错误信息日志. Fatal:输出每个…

【EI会议征稿通知】第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)

第五届计算机信息和大数据应用国际学术会议(CIBDA 2024) 2024 5th International Conference on Computer Information and Big Data Applications 第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)将于2024年4月26-28日在…

Spring MVC全局异常处理器

如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。 1.异常处理思路 系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异…

Spring MVC中JSON数据处理方式!!!

添加json依赖 <!--spring-json依赖--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version></dependency> 注解 RequestBody&#xff1a;作…

Powerbi小记-书签

Powerbi小记-点击书签页面改变切片器的筛选不会有变化 选择>>>书签 &#xff08;更多选项&#xff09;里面把数据的对钩去掉&#xff0c;这样你点击书签按钮&#xff0c;切换页面 上面的筛选就不会改变了 现在Powerbi不用直接插入按钮再添加书签跳转了 &#xff0c;直…

Edge无法卸载也无法上网的处理

1、在C盘把Microsoft下的子文件删掉&#xff0c;注意最好用delete删&#xff0c;别右键删&#xff01; 2、删掉用户文件夹下\AppData\Local\Microsoft\Edge\User Data下的所有文件 3、到微软官网下载最新的edge&#xff0c;再安装就可以了: https://www.microsoft.com/zh-cn…

【博士每天一篇论文-实验分析】Toroidal topology of population activity in grid cells

阅读时间&#xff1a;2023-11-18 1 介绍 年份&#xff1a;2022 作者&#xff1a;Richard J. Gardner&#xff0c;挪威科技大学卡维利系统神经科学研究所和神经计算中心&#xff0c;挪威特隆赫姆 期刊&#xff1a; Nature 引用量&#xff1a;194 这篇论文通过揭示格状细胞网络…

uniapp引入第三方字体库如(宋体、喜鹊燕书体、字小魂歌以晓手迹行楷体等) 最优解决方案

最近在开发一个写对联的小程序&#xff0c;其中要求对联文字以不同字体呈现&#xff0c;比如&#xff08;宋体、喜鹊燕书体、字小魂歌以晓手迹行楷体等&#xff09;&#xff0c;如图&#xff1a; 一般UI设计给的都是这种.tff格式的字体文件&#xff0c;如图&#xff1a; 那么…

SSL 阿里云证书申请和备案

一、什么是SSL SSL证书是数字证书的一种&#xff0c;类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上&#xff0c;也称为SSL服务器证书。遵守SSL协议&#xff0c;由受信任的数字证书颁发机构CA&#xff0c;在验证服务器身份后颁发&#xff0c;具有服务器身份验证…

D41|打家劫舍

198.打家劫舍 初始思路&&题解复盘&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 2.确定递推公式 决定dp[i]的因素就是第i房…

【利用Yolov8实现多个检测模型融合】

利用Yolov8实现多个检测模型融合 1 背景2 代码实现 1 背景 &#xff08;1&#xff09;例如&#xff0c;现在有Yolov8两个模型&#xff0c;一个模型用于识别人&#xff0c;一个模型用于识别树。现要求将识别人和识别树的两个模型合并成一个模型&#xff0c;仅利用一个模型就能同…

【SpringBoot3】实现自定义配置——以静态资源自定义配置为例(源码+代码示例)

这里写目录标题 1 配置类位置2 静态资源配置方式3 整体配置示例3.1 创建配置类3.2 实现配置方法3.3 指定配置文件属性 1 配置类位置 在左侧搜索autoconfigure可以找到spring-boot-autoconfigure包&#xff0c;打开其下的META-INF -> spring -> AutoConfiguration.import…

干货|移动端App自动化之触屏操作自动化

工作中我们经常需要对应用的页面进行手势操作&#xff0c;比如滑动、长按、拖动等&#xff0c;AppiumDriver 为我们提供一个模拟手势操作的辅助类 TouchAction&#xff0c;可以通过它对手机屏幕进行手势操作。 具体用法参见链接&#xff1a;chromedriver下载地址与webview自动化…

啊哈c语言——逻辑的挑战13:陶陶摘苹果

陶陶摘苹果 [1] 的问题描述如下&#xff1a; 陶陶家的院子里有一棵苹果树&#xff0c;每到秋天树上就会结出10个苹果。 苹果成熟的时候&#xff0c;陶陶就会跑去摘苹果。陶陶有个30cm高的板凳&#xff0c;当 她不能直接用手摘到苹果时&#xff0c;就会踩到板凳上再试试。 现在已…

4、指针与数组

数组与指针 指针与地址指针与函数参数指针与数组地址算数运算字符指针与函数指针数组以及指向指针的指针多维数组命令行参数指向函数的指针复杂声明 指针是一种保存变量地址的变量。C语言中&#xff0c;指针的使用非常广泛&#xff0c;原因之一是&#xff0c;指针常常是表达某个…

HTML音乐播放器带歌词跟随效果源码附注释

音乐播放器效果截图 <!doctype html><!--声明html版本编写指令 H5--> <html><head><!--声明页面编码 uft-8 国际编码--><meta charset