jpeg格式 - kkl_fly - 网易博客.htm

来自「一个jpeg的解码库」· HTM 代码 · 共 1,051 行 · 第 1/3 页

HTM
1,051
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0063)http://blog.163.com/kkl_fly/blog/static/1326770720080161743183/ -->
<HTML 
xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>JPEG格式 - kkl_fly - 网易博客</TITLE>
<META content=kkl_fly,kkl_fly name=Author>
<META content="King=王的个人主页 kkl_fly kkl_fly JPEG格式 网易博客 网易" name=Keywords>
<META content="JPEG格式 kkl_fly的网易博客" name=Description>
<META http-equiv=Content-Type content=text/html;charset=gbk><LINK 
href="http://st1.blog.163.com/04022300/style/common/favicon.ico" 
rel="shortcut icon">
<SCRIPT type=text/javascript>try{document.execCommand('BackgroundImageCache',false,true);}catch(e){}</SCRIPT>
<LINK href="JPEG格式 - kkl_fly - 网易博客.files/core.css" type=text/css 
rel=stylesheet><LINK id=_$$_link_layout 
href="JPEG格式 - kkl_fly - 网易博客.files/o.css" type=text/css rel=stylesheet><LINK 
id=_$$_link_theme href="JPEG格式 - kkl_fly - 网易博客.files/s.css" type=text/css 
rel=stylesheet><LINK href="JPEG格式 - kkl_fly - 网易博客.files/common.css" 
type=text/css rel=stylesheet><LINK id=music_skin_css 
href="JPEG格式 - kkl_fly - 网易博客.files/style.css" type=text/css rel=stylesheet>
<SCRIPT type=text/JavaScript><!--//--><![CDATA[//><!--var UD = {     status       : 'prev',     themeId      :  4087,     hostId       :  13267707,     visitorId    :  0,     visitorIP	  :  '61.135.162.240',     visitorAvatar:	 '',     hostPath     : '/kkl_fly',     hostName     : 'kkl_fly',      pageName     : 'prevBlogPerma',     visitorRank  : '-100',     visitorName  : '',      hostNickname : 'kkl_fly',     visitorNickname : '',     commentRank  : -100,     externHash   : '',     hasAdminCircles : 'false',     hostImgUrl   : 'http://ava.blog.163.com/photo/x0gwEOISJWMOIKN9Ilx02w==/171136785840165265.jpg',     themeFileId  : '-1207415073831',     serverName   : 'blog.163.com',     dataDigest	  : 'null',     lastModifyTime : ''};   UD.visitorUserType = [];if(UD.pageName == "prevHome" || UD.pageName == "editHome"){	var date = new Date();	date.setMinutes(0,0,0);	UD.weatherGenTime = date.getTime();}//--><!]]></SCRIPT>

<SCRIPT src="JPEG格式 - kkl_fly - 网易博客.files/core1.js" 
type=text/javascript></SCRIPT>

<SCRIPT src="JPEG格式 - kkl_fly - 网易博客.files/core_ext.js" 
type=text/javascript></SCRIPT>

<SCRIPT src="JPEG格式 - kkl_fly - 网易博客.files/core2.js" 
type=text/javascript></SCRIPT>

<SCRIPT src="JPEG格式 - kkl_fly - 网易博客.files/core3.js" 
type=text/javascript></SCRIPT>

<SCRIPT src="JPEG格式 - kkl_fly - 网易博客.files/interface.js" 
type=text/javascript></SCRIPT>

<SCRIPT src="JPEG格式 - kkl_fly - 网易博客.files/blog.js" 
type=text/javascript></SCRIPT>

<META content="MSHTML 6.00.2900.3314" name=GENERATOR></HEAD>
<BODY lang=zh id=blog-163-com>
<DIV id=tptlbr style="DISPLAY: none"></DIV>
<DIV class=bggb id=blog-163-com-body>
<DIV class=innerlayer id=_$$_inner_layer>
<DIV class=g_p_none><SPAN class=a_a></SPAN>&nbsp;</DIV>
<SCRIPT language=JavaScript>
<!--//--><![CDATA[//><!--
 	if (NEBlog==undefined) 
		var NEBlog={};
		
//--><!]]>
</SCRIPT>

<DIV class=g_p_none><!-- 单篇日志预览-菜单 -->
<DIV id=_$$_blog_perma_menu><A 
class="g_p_block g_w_45 g_p_left g_t_left n_ n34 g_t_14 c05" id=olderBlogLink 
style="DISPLAY: none">
<P class="g_w_95 g_t_hide g_c_hand g_p_left g_t_14" id=olderBlogTitle></P></A><A 
class="g_p_block g_w_45 g_p_right g_t_right n_ n33c g_t_14 c05" id=newerBlogLink 
style="DISPLAY: none">
<P class="g_p_right g_w_95 g_t_hide g_c_hand g_t_14" id=newerBlogTitle></P></A>
<DIV class="g_p_clear g_t_space"></DIV></DIV><!-- 单篇日志预览-内容 -->
<DIV class="g_c_container g_p_hide " id=_$$_blog_perma>
<DIV class="g_t_right g_c_pdin g_h_20 c08">
<DIV>字号: <A class=c06 id=bigfont 
onclick="NEBlog.gPermaLinkPage.updownMenu.changeFont('blogtext_fks!087075082081081069083082095095085085083069083081086068', 1);return false;" 
href="http://blog.163.com/kkl_fly/blog/static/1326770720080161743183/#">大</A><SPAN 
class=c07 id=bigfont_off style="DISPLAY: none; FONT-SIZE: 14px">大</SPAN>&nbsp; 
<A class=c06 id=middlefont 
onclick="NEBlog.gPermaLinkPage.updownMenu.changeFont('blogtext_fks!087075082081081069083082095095085085083069083081086068', 2);return false;" 
href="http://blog.163.com/kkl_fly/blog/static/1326770720080161743183/#">中</A><SPAN 
class=c07 id=middlefont_off 
style="DISPLAY: none; FONT-SIZE: 14px">中</SPAN>&nbsp; <A class=c06 id=smallfont 
style="DISPLAY: none" 
onclick="NEBlog.gPermaLinkPage.updownMenu.changeFont('blogtext_fks!087075082081081069083082095095085085083069083081086068', 3);return false;" 
href="http://blog.163.com/kkl_fly/blog/static/1326770720080161743183/#">小</A><SPAN 
class=c07 id=smallfont_off style="DISPLAY: inline; FONT-SIZE: 14px">小</SPAN> 
</DIV></DIV>
<P class="g_w_100 g_t_wrap g_t_center g_t_bold g_t_24 g_c_pdin c07" 
id=blogtitle_fks!087075082081081069083082095095085085083069083081086068>JPEG格式</P>
<DIV class=g_blog_list>
<DIV class="g_t_center g_c_pdin g_p_center c07 content" 
id=blogtext_fks!087075082081081069083082095095085085083069083081086068 
style="WIDTH: 760px">
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">微处理机中的存放顺序有正序(big endian)和逆序(little 
endian)之分。正序存放就是高字节存放在前低字节在后,而逆序存放就是低字节在前高字节在后。例如,十六进制数为A02B,正序存放就是A02B,逆序存放就是2BA0。摩托罗拉(Motorola)公司的微处理器使用正序存放,而英特尔(Intel)公司的微处理器使用逆序。JPEG文件中的字节是按照正序排列的。</P>
<P 
style="TEXT-INDENT: 2em">JPEG委员会在制定JPEG标准时,定义了许多标记(marker)用来区分和识别图像数据及其相关信息,但笔者没有找到JPEG委员会对JPEG文件交换格式的明确定义。直到1998年12月从分析网上具体的JPG图像来看,使用比较广泛的还是JPEG文件交换格式(JPEG 
File Interchange Format,JFIF)版本号为1.02。这是1992年9月由在C-Cube Microsystems公司工作的Eric 
Hamilton提出的。此外还有TIFF JPEG等格式,但由于这种格式比较复杂,因此大多数应用程序都支持JFIF文件交换格式。 
JFIF文件格式直接使用JPEG标准为应用程序定义的许多标记,因此JFIF格式成了事实上JPEG文件交换格式标准。JPEG的每个标记都是由2个字节组成,其前一个字节是固定值0xFF。每个标记之前还可以添加数目不限的0xFF填充字节(fill 
byte)。下面是其中的8个标记: </P>
<P style="TEXT-INDENT: 2em">JPEG的标记码列于下表: </P>
<DIR>
<P></P>
<P style="TEXT-INDENT: 2em">JPEG定义的标记</P>
<P style="TEXT-INDENT: 2em">
<TABLE borderColor=#000000 cellSpacing=2 cellPadding=1 width=536 border=1>
  <TBODY>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Symbol </P>
      <P style="TEXT-INDENT: 2em">(符号)</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Code Assignment</P>
      <P style="TEXT-INDENT: 2em">(标记代码)</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Description</P>
      <P style="TEXT-INDENT: 2em">(说明)</P></TD></TR>
  <TR>
    <TD vAlign=top colSpan=3>
      <P></P>
      <P style="TEXT-INDENT: 2em">Start Of Frame markers, non-hierarchical 
      Huffman coding</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF0</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC0</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Baseline DCT</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF1</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC1</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Extended sequential DCT</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF2</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC2</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Progressive DCT</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF3</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC3</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Spatial (sequential) lossless </P></TD></TR>
  <TR>
    <TD vAlign=top colSpan=3>
      <P></P>
      <P style="TEXT-INDENT: 2em">Start Of Frame markers, hierarchical Huffman 
      coding</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF5</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC5</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Differential sequential DCT</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF6</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC6</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Differential progressive DCT</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF7</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC7</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Differential spatial lossless</P></TD></TR>
  <TR>
    <TD vAlign=top colSpan=3>
      <P></P>
      <P style="TEXT-INDENT: 2em">Start Of Frame markers, non-hierarchical 
      arithmetic coding</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">JPG</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC8</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Reserved for JPEG extensions</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF9</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC9</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Extended sequential DCT</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF10</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFCA</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Progressive DCT</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF11</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFCB</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Spatial (sequential) Lossless</P></TD></TR>
  <TR>
    <TD vAlign=top colSpan=3>
      <P></P>
      <P style="TEXT-INDENT: 2em">Start Of Frame markers, hierarchical 
      arithmetic coding</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF13</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFCD</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Differential sequential DCT</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF14</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFCE</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Differential progressive DCT</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">SOF15</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFCF</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Differential spatial Lossless</P></TD></TR>
  <TR>
    <TD vAlign=top colSpan=3>
      <P></P>
      <P style="TEXT-INDENT: 2em">Huffman table specification</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">DHT</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFC4</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Define Huffman table(s)</P></TD></TR>
  <TR>
    <TD vAlign=top colSpan=3>
      <P></P>
      <P style="TEXT-INDENT: 2em">arithmetic coding conditioning 
      specification</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">DAC</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFCC</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Define arithmetic conditioning table</P></TD></TR>
  <TR>
    <TD vAlign=top colSpan=3>
      <P></P>
      <P style="TEXT-INDENT: 2em">Restart interval termination</P></TD></TR>
  <TR>
    <TD vAlign=top width="28%">
      <P></P>
      <P style="TEXT-INDENT: 2em">RSTm</P></TD>
    <TD vAlign=top width="30%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFD0~0xFFD7</P></TD>
    <TD vAlign=top width="42%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Restart with modulo 8 counter m</P></TD></TR>
  <TR>
    <TD vAlign=top colSpan=3>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?