JPEG文件由八个部分组成,每个部分的标记字节为两个,首字节固定为:0xFF,当然,准许在其前面再填充多个0xFF,以最后一个为准。下面为各部分的名称和第二个标记字节的数值,用ultraedit的16进制搜索功能可找到各部分的起始位置,在嵌入式系统中可用类似的数值匹配法定位。

一、图像开始SOI(Start of Image)标记,数值0xD8

二、APP0标记(Marker),数值0xE0

1、APP0长度(length)

2、标识符(identifier)

3、版本号(version)

4、X和Y的密度单位(units=0:无单位;units=1:点数/英寸;units=2:点数/厘米)

5、X方向像素密度(X density)

6、Y方向像素密度(Y density)

7、缩略图水平像素数目(thumbnail horizontal pixels)

8、缩略图垂直像素数目(thumbnail vertical pixels)

9、缩略图RGB位图(thumbnail RGB bitmap),由前面的数值决定,取值3n,n为缩略图总像素

三、APPn标记(Markers),其中n=1~15,数值对应0xE1~0xEF   

1、APPn长度(length)

2、应用细节信息(application specific information)

四、一个或者多个量化表DQT(difine quantization table),数值0xDB

1、量化表长度(quantization table length)

2、量化表数目(quantization table number)

3、量化表(quantization table)

五、帧图像开始SOF0(Start of Frame),数值0xC0

1、帧开始长度(start of frame length)

2、精度(precision),每个颜色分量每个像素的位数(bits per pixel per color component)

3、图像高度(image height)

4、图像宽度(image width)

5、颜色分量数(number of color components)

6、对每个颜色分量(for each component)

包括:ID、垂直方向的样本因子(vertical sample factor)、水平方向的样本因子(horizontal sample factor) 、量化表号(quantization table#)

六、一个或者多个霍夫曼表DHT(Difine Huffman Table),数值0xC4

1、霍夫曼表的长度(Huffman table length)

2、类型、AC或者DC(Type, AC or DC)

3、索引(Index)

4、位表(bits table)

5、值表(value table)

七、扫描开始SOS(Start of Scan),数值0xDA

1、扫描开始长度(start of scan length)

2、颜色分量数(number of color components)

3、每个颜色分量

包括:ID、交流系数表号(AC table #)、直流系数表号(DC table #)

4、压缩图像数据(compressed image data)

八、图像结束EOI(End of Image),数值0xD9

以上为基本可供检索的信息,细节内容不是小篇幅可以说清的,那可是一本书中至少一章的内容,几十页纸啊,最好到书店去买一本相关工具书,搞图像可少不了书的。

JPEG的更多相关文章

  1. TJpgDec—轻量级JPEG解码器

    TJpgDec-轻量级JPEG解码器 本文由乌合之众lym瞎编,欢迎转载blog.cnblogs.net/oloroso 下文中解码一词皆由decompression/decompress翻译而来. ...

  2. jpeg相关知识

    一.jpeg介绍 JPEG 是 Joint Photographic Exports Group 的英文缩写,中文称之为联合图像专家小组.该小组隶属于 ISO 国际标准化组织,主要负责定制静态数字图像 ...

  3. JPEG文件结构

    JPEG文件由八个部分组成,每个部分的标记字节为两个,首字节固定为:0xFF,当然,准许在其前面再填充多个0xFF,以最后一个为准.下面为各部分的名称和第二个标记字节的数值,用ultraedit的16 ...

  4. import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包

    import com.sun.image.codec.jpeg.JPEGCodec;   在Eclipse中处理图片,需要引入两个包: import com.sun.image.codec.jpeg. ...

  5. PNG和Gif及JPEG图片格式比较

    Gif格式特点 透明性Gif是一种布尔透明类型,既它可以是全透明,也可以是全不透明,但是它并没有半透明(alpha 透明). 动画Gif这种格式支持动画. 无损耗性Gif是一种无损耗的图像格式,这也意 ...

  6. jpeg库编译 - windows平台

    一.准备: 下载最新的jpeg库源码:http://www.ijg.org/files/jpegsr9a.zip二.编译 1. 解压到指定目录 2. 打开VS2010命令行窗口(为了得到VS2010的 ...

  7. maven 编译项目时:报com.sun.image.codec.jpeg不存在

    项目中用到图片处理相关的一些工具类,在eclipse开发工具内,程序并没有什么问题,都可以正常使用,项目也没有报错,但通过maven 进行编译打包时,则会报错: 程序包com.sun.image.co ...

  8. 解决canvas转base64/jpeg时透明区域变成黑色背景的方法

    最近在工作遇到一个问题,在将png图片转jpeg时,透明区域被填充成黑色,通过网上的介绍找到了解决的方法,现在总结下分享给同样遇到这个问题的朋友们,感兴趣的可以通过本文详细学习下. 在用canvas将 ...

  9. 一款免费支持PDF、word、excel、PPT、jpeg之间互转线上软件

    偶然发现的一款免费支持PDF.word.excel.PPT.jpeg之间互转,支持合并pdf.加密解密PDF的线上软件,首先声明,不是广告党,我自己试用过,确实是目前我用过最好用的,如果有朋友有更好的 ...

  10. 【图像处理】第三次实验:JPEG图像压缩

    1.任务说明 将LENA图像用JPEG方式压缩. 2.算法原理 JPEG(Joint Photographic Experts Group)是一个由ISO和IEC两个组织机构联合组成的一个专家组,负责 ...

随机推荐

  1. 关于容器类型数据的强转一共:str() list() set() tuple() dict() 都可以转换成对应的数据类型 /Number 数据类型的强转一共: int() bool() flaot() complex() 都可以转换成对应的数据类型

    # ###强制转换成字典类型 # 多级容器数据:该类型是容器数据,并且里面的元素还是容器类型数据 # ###二级容器 # 二级列表 listvar = [1,3,4,5,[6,7,8,9]] res ...

  2. 【LeetCode每天一题】Spiral Matrix(螺旋打印数组)

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  3. dll静态调用和动态调用

    动态链接库有2种连接方式,一种是通过库直接加入(又叫隐式加载或载入时加载),一种是在运行时加入.后者很好理解,比如LoadLibrary(),GetProcAddress()获取想要引入的函数,使用完 ...

  4. taro初识一

    很早之前就听说京东的凹凸实验室发布的开源的一对多的开源框架---Taro,一对多指的是一套代码编译成多端代码使用,极大的节省了开发的效率和成本 废话不多说 第一步,和vue一样下载相应的是cli脚手架 ...

  5. netty如何实现零拷贝

    根据 Wiki 对 Zero-copy 的定义: "Zero-copy" describes computer operations in which the CPU does n ...

  6. JAVA 多线程之volatile的介绍

    volatile的介绍 volatile的主要作用是:提示编译器该对象的值有可能在编译器未监测的情况下被改变. volatile类似于大家所熟知的const也是一个类型修饰符.volatile是给编译 ...

  7. centos7.5 修改网卡名称

    1.修改网卡配置文件中名称信息 vim /etc/sysconfig/network-scripts/ifcfg-ens33 将其中的名称为ens33的改为eth0 ,并将uuid删除以便后面克隆 2 ...

  8. Maven pom.xml详解(转)

    pom文件总体结构 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  9. JavaScript判断对象有没有定义

    if ( typeof(callbackfun) != "undefined" ) { callbackfun(); }

  10. Linux基础命令---lpc打印机控制

    lpc lpc指令用来控制打印机,它提供了一个命令行,用户可以输出命令来控制打印机.如果命令行上没有指定命令,lpc将从标准输入中显示提示符并接受命令. 此命令的适用范围:RedHat.RHEL.Ub ...