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> </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>
<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> <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 + -
显示快捷键?