JPG文件类型及文件组成

一、简述
JPEG是一个压缩标准,又可分为标准 JPEG、渐进式JPEG及JPEG2000三种:

①标准JPEG:以24位颜色存储单个光栅图像,是与平台无关的格式,支持最高级 别的压缩,不过,这种压缩是有损耗的。此类型图片在网页下载时只能由上而下依序显示图片,直到图片资料全部下载完毕,才能看到全貌。
②渐进式 JPEG:渐进式JPG为标准JPG的改良格式,支持交错,可以在网页下载时,先呈现出图片的粗略外观后,再慢慢地呈现出完整的内容,渐进式JPG的文件 比标准JPG的文件要来得小。
③JPEG2000:新一代的影像压缩法,压缩品质更好,其压缩率比标准JPEG高约30%左右,同时支持有损 和无损压缩。一个极其重要的特征在于它能实现渐进传输,即先传输图像的轮廓,然后逐步传输数据,让图像由朦胧到清晰显示。

以一幅24 位彩色图像为例,JPEG的压缩分为四个步骤:

①颜色转换:在将彩色图像进行压缩之前,必须先对颜色模式进行数据转换。转换完成之后 还需要进行数据采样。
②DCT 变换:是将图像信号在频率域上进行变换,分离出高频和低频信息的处理过程,然后再对图像的高频部分(即图像细 节)进行压缩。首先以象素为单位将图像划分为多个8×8的矩阵,然后对每一个矩阵作DCT 变换。把8×8的象素矩阵变成8×8的频率系数矩阵(所谓频率 就是颜色改变的速度),频率系数都是浮点数。
③量化:由于下面第四步编码过程中使用的码本都是整数,因此要对频率系数进行量化,将之转换为整 数。数据量化后,矩阵中的数据都是近似值,和原始图像数据之间有了差异,这一差异是造成图像压缩后失真的主要原因。这一过程中,质量因子的选取至为重要。 值选得大,可以大幅度提高压缩比,但是图像质量就比较差,质量因子越小图像重建质量越好,但是压缩比越低。
④编码:编码是基于统计特性的方 法。

四个步骤都完成后的JPEG文件,其基本数据结构为两大类型:“段”和经过压缩编码的图像数据。


二、数 据结构

1.段的一般结构如下表所示:

表1:段的一般结构
-----------------------------------------------------------------
名 称    字节数 数据  说明
-----------------------------------------------------------------
段 标识   1     FF    每个新段的开始标识
段类型   1           类型编码(称作“标记码”)
段长 度   2           包括段内容和段长度本身,不包括段标识和段类型
段内容               ≤65533字节
-----------------------------------------------------------------
说明:
①JPG 文件中所有关于宽度高度长度间隔这一类数据,凡是>1字节的,均采用Motorola格式,即:高位在前,低位在后。
② 有些段没有长度描述也没有内容,只有段标识和段类型。文件头和文件尾均属于这种段。
③段与段之间无论有多少FF都是合法的,这些FF称为“填充字 节”,必须被忽略掉。


2.段类型有30种,但只有10种是必须被所有程序识别的,其它的类型都可以忽略。所以下面只列出这 10种类型。

表2:段类型
---------------------------------------
名称  标 记码  说明
---------------------------------------
SOI    D8     文件头
EOI    D9     文 件尾
SOF0   C0     帧开始(标准 JPEG)
SOF1   C1     同上
DHT    C4     定 义 Huffman 表(霍夫曼表)
SOS    DA     扫描行开始
DQT    DB     定义量化表
DRI    DD     定 义重新开始间隔
APP0   E0     定义交换格式和图像识别信息
COM    FE     注释
-----------------------------------------------------------
说明:有的文章也将DNL段(标记码=DC,定义扫描行数)列为必须段。


3.以下按一般JPEG文件的段排列顺序详细介绍 各种段的结构:

表3:SOI(文件头)
-----------------
名称  字节数   值
-----------------
段 标识   1     FF
段类型   1     D8 
-----------------
说明:这两个字节构成了 JPEG文件头。


表4:APP0(图像识别信息)
--------------------------------------------------------------------------
名 称       字节数 值          说明
--------------------------------------------------------------------------
段 标识        1   FF
段类型        1   E0
段长度        2   0010        如果有 RGB缩略图就=16+3n
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用bat批处理重命名批量的jpg文件,我们可以编写一个批处理脚本来自动完成这个任务。 首先,我们需要在文本编辑器中打开一个新的文件。然后,我们可以使用以下的命令来重命名jpg文件: ``` @echo off setlocal enabledelayedexpansion set "folder=C:\path\to\your\folder\" set "extension=.jpg" set "newNamePrefix=MyImage" for %%a in ("%folder%*%extension%") do ( set "filename=%%~na" rename "%%a" "!newNamePrefix!_!filename!!extension!" ) echo Renaming complete pause ``` 在上述代码中,我们首先使用了`@echo off`命令来关闭命令的显示。然后,我们使用了`setlocal enabledelayedexpansion`命令来启用对变量的延迟扩展,这对于在循环中使用变量很有用。 接下来,我们设置了要重命名的文件夹路径,文件扩展名和新文件名的前缀。你可以根据自己的需要修改这些值。 在循环中,我们使用`for`命令来遍历文件夹中的所有jpg文件。`%%a`是循环变量,`"%folder%*%extension%"`指定了要重命名的文件路径。 然后,我们使用`set "filename=%%~na"`命令将文件名保存到变量`filename`中,不包括扩展名。 最后,我们使用`rename`命令来将原始文件重命名为新的文件名。新的文件名由`!newNamePrefix!_!filename!!extension!`组成,其中`!newNamePrefix!`是我们指定的新文件名的前缀。 最后,我们显示一个提示信息并暂停命令的执行,以便查看重命名是否成功。 编写完批处理脚本后,我们可以将它保存为以.bat为扩展名的文件,例如`renamejpg.bat`。然后,双击运行这个脚本,它将自动完成批量jpg文件的重命名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值