首页 > 其他分享 >JPEG格式详解Baseline、Progressive的区别

JPEG格式详解Baseline、Progressive的区别

时间:2024-01-09 18:36:42浏览次数:32  
标签:文件大小 Baseline Progressive JPEG 色度 质量 图像 加载

在这里插入图片描述

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)的水平和垂直分辨率都减半。这意味着每四个像素共享一组色度信息。这种方式可以显著减小数据量,同时在许多情况下对图像质量的影响相对较小。


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

标签:文件大小,Baseline,Progressive,JPEG,色度,质量,图像,加载
From: https://blog.51cto.com/u_15777557/9164083

相关文章

  • Configuration failed to find one of freetype2 libpng libtiff-4 libjpeg.
     001、问题,安装devtools中遇到如下报错:Configurationfailedtofindoneoffreetype2libpnglibtiff-4libjpeg. 002、解决方法:[root@pc1~]#yuminstallfreetype-devellibpng-devellibtiff-devellibjpeg-devel##根据提示安装  。 ......
  • R语言install.packages("jpeg")报错
    R语言install.packages("jpeg")时报错Infileincludedfromread.c:1:0:rjcommon.h:11:21:fatalerror:jpeglib.h:Nosuchfileordirectoryrjcommon.h:11:21:致命错误:jpeglib.h:没有那个文件或目录#include<jpeglib.h>compilationterminated.make:***[read.o]Error......
  • “达观杯”智能文档版面分析赛题baseline已上线,欢迎下载报名!
    由国内领先智能文本处理企业达观数据与上海市计算机学会联合举办的智能文档版面分析多模态数据处理算法竞赛正在火热报名阶段。开赛一周内,第七届“达观杯”已有来自国内外的近200名企业和高校算法精英参与到比赛中。作为本次赛题的出题方,为助力各位打榜达人更快速上手比赛,更高效优......
  • align属性absMiddle、AbsBottom、Baseline、Bottom、Left、Middle、NotSet、Right、Te
    AbsBottom图像的下边缘与同一行中最大元素的下边缘对齐。AbsMiddle图像的中间与同一行中最大元素的中间对齐。Baseline图像的下边缘与第一行文本的下边缘对齐。Bottom图像的下边缘与第一行文本的下边缘对齐。Left图像沿网页的左边缘对齐,文字在图像右边换行。Middle图像......
  • C# GDI+保存图片设置图片质量_C#保存Jpeg图片质量
    一、C#GDI+ Image对象保存图片质量Imagebmp=Bitmap.FromFile("3.png");//默认保存质量预估80%bmp.Save("default3.jpg",ImageFormat.Jpeg);//保存质量ImageCodecInfomyImageCodecInfo=GetEncoderInfo("image/jpeg");System.Drawing.Imaging.Encoder......
  • FFmpeg将视频转换成一帧一帧的jpeg图片(代码实现)
      #include<iostream> usingnamespacestd; extern"C" { #include"libavcodec/avcodec.h" #include"libavformat/avformat.h" #include"libswscale/swscale.h" #include......
  • ffmpeg把读取的视频流保存为jpeg文件
    intimg_savejpeg(AVFrame*pFrame,char*out_filename){//视频流保存为jpegintwidth=pFrame->width;intheight=pFrame->height;AVCodecContext*pCodeCtx=NULL;AVFormatContext*pFormatCtx=avformat_alloc_context();//设置输出文件格式pFormatCtx->oformat=av......
  • iMX8MP HDMI图像输出 & V4L2生成MJPEG流
    飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX8MPlus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经......
  • Linux 编译 libjpeg-9e
     jpeg的库有两个:一个是官方的libjpeg 还有一个是libjpeg-turboJPEG库(libjpeg-turbo):https://libjpeg-turbo.org/Libjpeg库:http://www.ijg.org/ *:我用的是官方的libjpeg,进入官网下载的时候,要注意zip的这个包是Windows的,tar.gz的这个包才是linux的 ./configure-h......
  • AI训练营-baseline代码中参数精读
    #数据准备train_dataset=pd.read_csv("./train.csv")#原始训练数据。test_dataset=pd.read_csv("./test.csv")#原始测试数据(用于提交)。submit=pd.DataFrame()#定义提交的最终数据。submit["序号"]=test_dataset["序号"]#对齐测试数据的序号。MAE_scores=......