十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天就跟大家聊聊有关如何理解JPEG图片格式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
成都创新互联是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的十多年时间我们累计服务了上千家以及全国政企客户,如成都宴会酒店设计等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致表扬。
JPEG简介
JPEG是一种比较成熟的图像有损压缩格式,经过JPEG压缩,图像质量会有所损失,但是,人眼是很不容易分辨出来这种差别的。jpeg图像在质量和存储空间得到了一个相对平衡的状态。不过jpeg文件在组织方式上略显复杂,详细请向下看。
JPEG文件的存储方式
jpeg文件是按照段的格式来组织存储的,每一个文件由多个段组成,每个段代表不同的信息。同时,每个段也有自己唯一的标识符。标识符是由两个字节所组成,格式如0x FF XX,其中XX代表的是不同的类型。例如,SOI(start of image),表示图像的开始,其段头的标识符为 0X FF D8。而整个jpeg图片的组织便是由诸多这些不同类型的段和经过JPEG压缩后的数据而组成。如果解析,同样也就需要根据这些段不同的头类型来做相应的处理。 主要的JPEG段1SOI
SOI(start of image):值 0xFF D8,标记图像的开始。
2APP0(应用程序标记)
APP0:值 0x FF E0,应用程序标记。组织结构如下:
3SOF
SOF(start of frame):值0x FF C0,图像帧开始标记。
字段及名称 | 字节长度 | 说明 |
数据段标志位 | 2 bytes | 固定值: 0x FF C0 |
数据段长度 | 2 bytes | 不包含标志位长度 |
精度(每像素比特数) | 1 bytes | 一般为8 |
图像高度 | 2 bytes | 以像素为单位 |
图像宽度 | 2 bytes | 以像素为单位 |
颜色分量数 | 1 bytes | 灰度:1 YCbCr:3 CMYK:4 |
颜色分量信息 | 颜色分量数 * 3 | 每个颜色分量: 1bytes: 分量ID 1bytes: 水平垂直采样因子 1bytes:当前分量使用的量化表ID |
4SOS
字段及名称 | 字节数 | 说明 |
数据段标志位 | 2 bytes | 值: 0x FF DA, 表示图 |
数据长度 | 2 bytes | 不包含标志位长度 |
颜色分量数 | 1 bytes | 灰度图:1 YCbCr : 3 CMYK: 4 |
颜色分量信息 | 2 * 颜色分量数 | 1bytes: id 1bytes: DC/AC系数表id |
谱选择开始 | 1 bytes | 0x 00 |
谱选择结束 | 1 bytes | 0x 3F |
谱选择 | 1 bytes | 0x 00 |
在SOS之后,便是具体的按照jpeg编码的压缩数据。该部分内容需要使用jpeg相应的解码库去实现解码。
在jpeg文件中,如果遇到了0xFF D9 , 那就表明整个文件读取结束了。该字段也有个名称叫做EOI(end of image),占用两个字节。
当然了,整个jpeg文件还有其他的段,仿照上述便同样可以分析。
看完上述内容,你们对如何理解JPEG图片格式有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。