JPEG格式详解Baseline、Progressive的区别

2024-01-10 18:52

本文主要是介绍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的精彩世界!

这篇关于JPEG格式详解Baseline、Progressive的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/591742

相关文章

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Before和BeforeClass的区别及说明

《Before和BeforeClass的区别及说明》:本文主要介绍Before和BeforeClass的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Before和BeforeClass的区别一个简单的例子当运行这个测试类时总结Before和Befor

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五