首页 > 其他分享 >常见图片格式--JPG、PNG、GIF、BMP

常见图片格式--JPG、PNG、GIF、BMP

时间:2023-03-14 16:37:02浏览次数:61  
标签:文件 -- 图片格式 JPG --- 图像 数据 PNG

1、JPG文件格式:

(1)JPG = “段” + 经过压缩编码的图像数据

什么是‘段’?段是一种数据结构,主要是来控制一段数据怎样存储和表示,段的结构如下:

段 = 段标识 + 段类型 + 段长度 +段内容 (其中文件头和文件尾属于没有‘段长度’和‘段内容’的特殊的段)

(2)‘段标识’是一种固定的符号--“FF”,段的类型有30种,其中有10中是每个JPG图片中必须存在的,其余的都是可选的类型,在此,我们就那10中类型加以说明,如下:


【1】D8 ---- 文件头   【2】D9 --- 文件尾  【3】FE --- 注释  【4】C0 --- 帧开始  【5】C1 --- 帧开始

【6】C4 --- 定义Huffman表  【7】DA --- 扫描行开始  【8】DB --- 定义量化表 【9】DD---定义重新开始间隔

【10】E0 --- 定义交换格式和图像识别信息

因此:
一般的JPG格式的图片通过十六进制的文件磁盘内容查看器发现:文件头为:FF D8 ,而且通常在此之后都有FF E0(其后一般接JFIF)来表明图像识别信息和交换格式,文件尾为:FF D9。

2、PNG文件格式:

(1)文件结构如下:

PNG文件 = PNG标识 + 数据块 + 数据块 + …… + 数据块(其中数据块的个数最少是4)

(2)PNG标识是固定的,以十六进制表示为:【89 50 4E 47 0D 0A 1A 0A】,对应的符号为:【 ‰ P N G . . . . 】

数据块分析如下:


PNG文件 -  PNG标识  =   IHDR  + 可选数据块  +  PLTE  +  可选数据块  +  IDAT  +  可选数据块  +  IEND 

分别说明如下:

【1】IHDR数据块,文件头数据块,在一个PNG文件里只能有一个。

【2】PLTE数据块,调色板数据块,它仅与索引彩色图像有关,其中,‘索引图像’是指--一种把像素值直接作为RGB调色板下标的图像。

【3】IDAT数据块,图像数据块,存储实际的图像数据,在数据流中包含多个连续顺序的图像数据块。

【4】IEND数据块,图像结束数据块,表示--数据流已结束,放在文件的末尾。

以上的数据块都是以自己的名字作为开头来控制一段数据。其中,结尾数据块IEND的内容固定:

【00 00 00 00 49 45 4E 44 AE 42 60 82】,对应的符号如下:

【. . . . I E N D (后四位为CRC校验码)】

3、GIF文件格式:

(1)文件的单位是数据块,文件的结构如下:


GIF文件  =  文件头  +  GIF数据流  +  文件结束块

GIF数据流  =  控制块  +   成像块   +  特殊用途块

(2)文件头大小为6个字节,而且【文件头 = 标识符(3字节) + 版本(3字节)】,其中,标识符为“GIF”,版本一般是“87a”或者“89a”。

文件结束块是一个单字节的数据块,它指示数据流的结束,值为“0x3B”,符号是“;”。

注意:GIF文件中的每个数据块都有一个块尾记录,大小为1个字节,同样也是“0x3B”。

4、BMP文件格式:

(1)文件结构如下:


BMP文件 =  文件头信息块  +  图像描述信息块  +  颜色表  +  图像数据区

(2)关于文件头信息块,0000--000D,其中,【0000--0001】为2个字节的文件标识“BM”,【0002--0005】为4个字节的文件大小的值,【0006--0009】为4个字节的保留值,分别为【00 00 00 00】,【000A -- 000D】为图像数据区的起始位置(偏移量),它的值等于前三个内容的大小的和。

另外,几个比较重要的位置有:【000A---000D】图像数据的起始位置,【0022--0025】图像数据的大小,【000E--0011】图像描述信息块大小,【0012--0015】图像宽度,【0016--0019】图像高度。

ref:
https://blog.csdn.net/wangwei222/article/details/38586161

标签:文件,--,图片格式,JPG,---,图像,数据,PNG
From: https://www.cnblogs.com/eddyz/p/17215348.html

相关文章

  • kaptcha验证码使用
    kaptcha介绍Kaptcha是一个可高度配置的实用验证码生成工具,已经存在很久了,比较稳定,可自由配置的选项如:1.验证码的字体2.验证码字体的大小3.验证码字体的字体颜色4.验......
  • Insert 插入数据时提示ora-03113错误
    故障现象:下午15:00时,业务反馈业务某张表无法进行数据插入,只要Insert就会提示ora-03113,并将会话直接Kill掉。错误分析:查看alert日志发现有ora-07445的错误ORA-07445:e......
  • 操作系统学习笔记(二)
    操作系统接口什么是操作系统接口?系统调用。POSIX:PortableOperatingSystemInterfaceofUnix(IEEE制定的一个标准族)分类POSIX定义描述任务管理fork创建一个......
  • 电子商务实验1
    实验1搭建你自己的Web服务器实验过程下载版本选择Apachehttpd2.4.55,选择Windows操作系统的二进制安装包在目录中解压查看配置文件\conf\httpd.conf,修改ServerRoot......
  • MySQL 考试练习题
    1、用户表account1、用户表account(用户编号userid,用户名fullname,密码passward,性别sex,住址adderss,邮箱email,电话phone)account(useridchar(6),fullnamechar(4),passwar......
  • 保证DDS通信 ------ 配置主机和虚拟机在同一网段下
    参考博客:https://www.cnblogs.com/mrlayfolk/p/16155702.html1.设备情况主机:win10,有线连接PPPOE,校园网虚拟机:VM--centos72.主机配置打开控制面板→网络→网......
  • 将时间戳转换为日期格式
      //将时间戳转换成日期格式  timestampToTime(timestamp){   vardate=newDate(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 ......
  • 一些概念的简介(一)
    免疫检查点(Immunecheckpoint)是T细胞表面抑制其激活并参与免疫反应的信号通路。免疫检查点如果被激活,就会抑制免疫细胞的作用。癌细胞为了躲避免疫系统的攻击,一般都会激......
  • 电子商务实验2
    实验2测量“小白鼠”的前端性能实验过程https://ecommerceguide.com/ecommerce-platforms/系统来自网站中选择的已有框架选择Wix查看详细说明注册账号并完成相......
  • 使用简略语法传入 lambda 值参
    在Kotlin中,可以使用简略语法传入Lambda表达式作为函数的参数。如果函数的最后一个参数是一个Lambda表达式,那么可以将该表达式写在调用括号外面,并使用大括号{}包裹......