JPEG格式详解Baseline、Progressive的区别

news2024/11/18 11:33:24

在这里插入图片描述

文章目录

  • 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的精彩世界!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8S 存储卷

意义:存储卷----数据卷 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的,delete,k8s用控制器创建的pod,delete相当于重启,容器的状态也会回复到初始状态 一旦回到初始状态,所有的后天编辑的文件…

原来这些小众知识库软件这么好用,挖到宝了

在企业管理中,知识库的作用越来越被重视。它不仅可以提高工作流程的效率,还可以最大限度地利用企业中的知识资源。然而,在众多的知识库工具中选择一款合适的并非易事。不用担心,今天我要为大家揭晓一些小众却非常好用的知识库软件…

C语言之详解数组【附三子棋和扫雷游戏实战】

文章目录 一、一维数组的创建和初始化1、数组的创建2、数组的初始化3、一维数组的使用4、 一维数组在内存中的存储 二、二维数组的创建和初始化1、二维数组的创建2、二维数组的初始化3、二维数组的使用4、二维数组在内存中的存储 三、数组越界边界值考虑不当导致越界访问数组大…

如何利用CHAT做简单的总结体会?

问CHAT :在测试过程中使用appiumpython自动化的优点和体会 CHAT回复:使用 Appium 配合 Python 进行自动化测试主要有以下几点优点: 1. 跨平台性:Appium 支持 iOS 和 Android 平台的应用自动化测试,无论是原生应用、移…

开放平台系统架构设计

一、概述 背景与目标 本开放平台旨在构建一个可扩展、高可用的生态体系,通过提供统一标准的API接口和SDK工具包,让第三方开发者能够安全、高效地接入我们的服务和资源,实现业务的互联互通。 定位与功能描述 系统主要包含用户认证授权、资…

[C#]winform部署PaddleOCRV3推理模型

【官方框架地址】 https://github.com/PaddlePaddle/PaddleOCR.git 【算法介绍】 PaddleOCR是由百度公司推出的一款开源光学字符识别(OCR)工具,它基于深度学习框架PaddlePaddle开发。这款工具提供了一整套端到端的文字检测和识别解决方案&a…

OpenHarmony之hdc

OpenHarmony之hdc 简介 hdc(OpenHarmony Device Connector)是 OpenHarmony 为开发人员提供的用于调试的命令行工具,通过该工具可以在Windows/Linux/MacOS等系统上与开发机或者模拟器进行交互。 类似于Android的adb,和adb类似&a…

如何使用web文件管理器Net2FTP搭建个人网盘

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…

智能时代:自然语言生成SQL与知识图谱问答实战

语义解析 前言语义解析的应用场景总结概论语义解析和大模型的关系延伸阅读 前言 语义解析技术可以提高人机交互的效率和准确性,在自然语言处理、数据分析、智能客服、智能家居等领域都有广泛的应用前景。特别是在大数据时代,语义解析能够帮助企业更快速…

pc下载apk文件到andriod开发板,并实现可视化

PC端安装APK下载器 点击下载 刷机精灵APK安装器 界面如下,可将下载好的apk文件,直接拖拽到该界面,然后点击安装全部按钮进行安装,安装过程中的具体状态会显示在具体的apk后面。 如下图,安装错误、安装完成等皆为apk安…

springcloud Config配置中心

简介 服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。 SpringCloud提供了ConfigS…

什么软件能查出微信聊天记录

在企业管理中,很多时候是需要查出员工的具体的聊天记录的。今天就分享两种可以查出微信聊天记录的工具: 工具一:微信自带的工具 1、打开微信,在聊天界面点击右上角的“...”按钮,选择“设置”,进入“聊天”…

Navicat迁移局域网内其他PC机的MySQL数据库

迁移局域网内其他PC机的MySQL数据库到本机 查看局域网IP 设置可远程连接的账号 开放本机防火墙的3306端口 连接PC机的MySQL 利用Navicat迁移数据库 刚换了个电脑,旧电脑的MySQL数据库太多了,转成.sql文件,再传输到新电脑上运行&#xff…

二叉树统一迭代法解析

引言 二叉树的遍历无论是通过递归还是迭代都是比较简单的,递归法下不同访问顺序的代码格式较为一致,通过迭代来进行二叉树的前序、中序、后序遍历存在着代码形式不不统一的问题,显得不够优雅。代码随想录里给出了一种适应于这三种顺序遍历的迭…

C语言入门教程,C语言学习教程(第三部分:C语言变量和数据类型)一

第三部分:C语言变量和数据类型 本章也是C语言的基础知识,主要讲解变量、数据类型以及运算符,这其中涉及到了数据的存储格式以及不同进制。 一、大话C语言变量和数据类型 在《数据在内存中的存储(二进制形式存储)》一…

LeetCode 36 有效的数独

题目描述 有效的数独 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考…

Spring Cloud + Vue前后端分离-第11章 用户管理与登录

源代码在GitHub - 629y/course: Spring Cloud Vue前后端分离-在线课程 Spring Cloud Vue前后端分离-第11章 用户管理与登录 11-1 增加用户管理功能 用户表设计与基本代码生成 1.用户管理与登录:用户表设计与基本代码生成 all.sql generatorConfig.xml Server…

Unity组件开发--AB包打包工具

1.项目工程路径下创建文件夹:ABundles 2.AB包打包脚本: using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.SceneManagement;public class AssetBundle…

Python从入门到网络爬虫(OS模块详解)

前言 本章介绍python自带模块os,os为操作系统 operating system 的简写,意为python与电脑的交互。os 模块提供了非常丰富的方法用来处理文件和目录。通过使用 os 模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强…

C语言如何提高程序的可读性?

一、问题 可读性是评价程序质量的一个重要标准,直接影响到程序的修改和后期维护,那么如何提高程序的可读性呢? 二、解答 提高程序可读性可以从以下几方面来进行。 (1)C程序整体由函数构成的。 程序中,main()就是其中…