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

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

HTM
1,051
字号
      <P style="TEXT-INDENT: 2em">units=0:无单位</P>
      <P style="TEXT-INDENT: 2em">units=1:点数/英寸</P>
      <P style="TEXT-INDENT: 2em">units=2:点数/厘米</P></TD></TR>
  <TR>
    <TD vAlign=top width="7%">
      <P></P>
      <P style="TEXT-INDENT: 2em">14</P></TD>
    <TD vAlign=top width="8%">
      <P></P>
      <P style="TEXT-INDENT: 2em">2 bytes</P></TD>
    <TD vAlign=top width="10%"> </TD>
    <TD vAlign=top width="36%">
      <P></P>
      <P style="TEXT-INDENT: 2em">&lt;Xdensity&gt;</P></TD>
    <TD vAlign=top width="39%">
      <P></P>
      <P style="TEXT-INDENT: 2em">水平方向像素密度</P></TD></TR>
  <TR>
    <TD vAlign=top width="7%">
      <P></P>
      <P style="TEXT-INDENT: 2em">16</P></TD>
    <TD vAlign=top width="8%">
      <P></P>
      <P style="TEXT-INDENT: 2em">2 bytes</P></TD>
    <TD vAlign=top width="10%"> </TD>
    <TD vAlign=top width="36%">
      <P></P>
      <P style="TEXT-INDENT: 2em">&lt;Ydensity&gt;</P></TD>
    <TD vAlign=top width="39%">
      <P></P>
      <P style="TEXT-INDENT: 2em">垂直方向像素密度</P></TD></TR>
  <TR>
    <TD vAlign=top width="7%">
      <P></P>
      <P style="TEXT-INDENT: 2em">18</P></TD>
    <TD vAlign=top width="8%">
      <P></P>
      <P style="TEXT-INDENT: 2em">1 byte</P></TD>
    <TD vAlign=top width="10%"> </TD>
    <TD vAlign=top width="36%">
      <P></P>
      <P style="TEXT-INDENT: 2em">&lt;Xthumbnail&gt;</P></TD>
    <TD vAlign=top width="39%">
      <P></P>
      <P style="TEXT-INDENT: 2em">缩略图水平像素数目</P></TD></TR>
  <TR>
    <TD vAlign=top width="7%">
      <P></P>
      <P style="TEXT-INDENT: 2em">19</P></TD>
    <TD vAlign=top width="8%">
      <P></P>
      <P style="TEXT-INDENT: 2em">1 byte</P></TD>
    <TD vAlign=top width="10%"> </TD>
    <TD vAlign=top width="36%">
      <P></P>
      <P style="TEXT-INDENT: 2em">&lt;Ythumbnail&gt;</P></TD>
    <TD vAlign=top width="39%">
      <P></P>
      <P style="TEXT-INDENT: 2em">缩略图垂直像素数目</P></TD></TR>
  <TR>
    <TD vAlign=top width="7%"> </TD>
    <TD vAlign=top width="8%">
      <P></P>
      <P style="TEXT-INDENT: 2em">3n</P></TD>
    <TD vAlign=top width="10%"> </TD>
    <TD vAlign=top width="36%">
      <P></P>
      <P style="TEXT-INDENT: 2em">&lt; Thumbnail RGB bitmap&gt;</P></TD>
    <TD vAlign=top width="39%">
      <P></P>
      <P style="TEXT-INDENT: 2em">缩略RGB位图(n为缩略图的像素数)</P></TD></TR>
  <TR>
    <TD vAlign=top width="7%"> </TD>
    <TD vAlign=top width="8%"> </TD>
    <TD vAlign=top width="10%"> </TD>
    <TD vAlign=top width="36%">
      <P></P>
      <P style="TEXT-INDENT: 2em">Optional JFIF extension APP0 marker 
      segment(s)</P></TD>
    <TD vAlign=top width="39%">
      <P></P>
      <P style="TEXT-INDENT: 2em">任选的JFIF扩展APP0标记段</P></TD></TR>
  <TR>
    <TD vAlign=top width="7%"> </TD>
    <TD vAlign=top width="8%">
      <P></P>
      <P style="TEXT-INDENT: 2em">……</P></TD>
    <TD vAlign=top width="10%"> </TD>
    <TD vAlign=top width="36%">
      <P></P>
      <P style="TEXT-INDENT: 2em">……</P></TD>
    <TD vAlign=top width="39%"> </TD></TR>
  <TR>
    <TD vAlign=top width="7%"> </TD>
    <TD vAlign=top width="8%">
      <P></P>
      <P style="TEXT-INDENT: 2em">2 byte</P></TD>
    <TD vAlign=top width="10%">
      <P></P>
      <P style="TEXT-INDENT: 2em">0xFFD9</P></TD>
    <TD vAlign=top width="36%">
      <P></P>
      <P style="TEXT-INDENT: 2em">(EOI) end-of-file</P></TD>
    <TD vAlign=top width="39%">
      <P></P>
      <P style="TEXT-INDENT: 2em">图像文件结束标记</P></TD></TR></TBODY></TABLE></P></DIR>
<P></P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; JPEG文件使用的颜色空间是CCIR 
601推荐标准进行的彩色空间(参看第7章)。在这个彩色空间中,每个分量、每个像素的电平规定为255级,用8位代码表示。从RGB转换成YCbCr空间时,使用下面的精确的转换关系:</P>
<P style="TEXT-INDENT: 2em">  &nbsp;&nbsp;&nbsp;&nbsp; Y = 256 * E'y</P>
<P style="TEXT-INDENT: 2em">  &nbsp;&nbsp;&nbsp; Cb = 256 * [E'Cb] + 128</P>
<P style="TEXT-INDENT: 2em">  &nbsp;&nbsp;&nbsp; Cr = 256 * [E'Cr] + 128</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 其中亮度电平E'y和色差电平E'Cb和E'Cb分别是CCIR 
601定义的参数。由于E'y的范围是0~1,E'Cb和E'Cb的范围是-0.5~+0.5,因此Y, 
Cb和Cr的最大值必须要箝到255。于是RGB和YCbCr之间的转换关系需要按照下面的方法计算。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; (1) 从RGB转换成YCbCr</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 
YCbCr(256级)分量可直接从用8位表示的RGB分量计算得到:</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Y&nbsp;=&nbsp; &nbsp;0.299R + 0.587G + 0.114B</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cb = 
-0.1687R - 0.3313G + 0.5B + 128</P>
<P style="TEXT-INDENT: 2em">   &nbsp; Cr = 0.5R - 0.4187G - 0.0813B + 128</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 需要注意的是不是所有图像文件格式都按照R0,G0,B0,…… 
Rn,Gn,Bn的次序存储样本数据,因此在RGB文件转换成JFIF文件时需要首先验证RGB的次序。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; (2) 从YCbCr转换成RGB </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; RGB分量可直接从YCbCr(256级)分量计算得到:</P>
<P style="TEXT-INDENT: 2em">&nbsp;  &nbsp;&nbsp;&nbsp; R = Y + 1.402(Cr-128)</P>
<P style="TEXT-INDENT: 2em">    G = Y - 0.34414(Cb-128) - 0.71414(Cr-128)</P>
<P style="TEXT-INDENT: 2em">    B = Y + 1.772(Cb-128)</P>
<P style="TEXT-INDENT: 2em"><A></A></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 
在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。这就是说JFIF文件中的第一个图像样本是图像左上角的样本。 </P>
<OL>
  <LI>SOI  0xD8      图像开始 
  <LI>APP0 0xE0      JFIF应用数据块 
  <LI>APPn 0xE1 - 0xEF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其他的应用数据块(n, 1~15) 
  <LI>DQT  0xDB      量化表 
  <LI>SOF0 0xC0      帧开始 
  <LI>DHT  0xC4      霍夫曼(Huffman)表 
  <LI>SOS  0xDA      扫描线开始 
  <LI>EOI  0xD9      图像结束 </LI></OL>
<P></P>
<P style="TEXT-INDENT: 2em"></P></DIV>
<DIV class=g_p_center style="WIDTH: 760px">
<DIV class="g_blog_circle g_circle_perm g_t_hide" 
id=relateBlogCircle_fks!087075082081081069083082095095085085083069083081086068 
style="MARGIN-LEFT: 25px"></DIV></DIV>
<DIV class=g_p_center style="WIDTH: 760px">
<DIV class="g_recent_read g_t_hide" 
id=blogReader_fks!087075082081081069083082095095085085083069083081086068 
style="MARGIN-LEFT: 25px"></DIV></DIV></DIV>
<DIV class=g_tab_btn00 
id=cssTabBar_fks!087075082081081069083082095095085085083069083081086068>
<DIV class=bdl 
id=ShareDiv_fks!087075082081081069083082095095085085083069083081086068><A 
class=c05 
onclick="NEBlog.gPermaLinkPage.updownMenu.upDownShare('fks!087075082081081069083082095095085085083069083081086068','blog/1326770720080161743183.track','blog/static/1326770720080161743183');return false;" 
href="http://blog.163.com/kkl_fly/blog/static/1326770720080161743183/#">分享(<NOBR 
id=tbCount_fks!087075082081081069083082095095085085083069083081086068>?</NOBR>)<SPAN 
class="n_ n32 g_p_none">&nbsp;</SPAN></A></DIV>
<DIV class="bdl bdr" 
id=ComDiv_fks!087075082081081069083082095095085085083069083081086068><A 
class=c05 
onclick="NEBlog.gPermaLinkPage.updownMenu.upDownComments('fks!087075082081081069083082095095085085083069083081086068', 'JPEG格式', 'blog/static/1326770720080161743183');return false;" 
href="http://blog.163.com/kkl_fly/blog/static/1326770720080161743183/#">评论(<NOBR 
id=comCount_fks!087075082081081069083082095095085085083069083081086068>?</NOBR>)<SPAN 
class="n_ n32 g_p_none">&nbsp;</SPAN></A></DIV>
<DIV class="bdl bdr c09">分类:<A class=c05 
id=aBelongClsfks!087075082081081069083082095095085085083069083081086068 
onclick="NEBlog.gPermaLinkPage.updownMenu.openSameClass('fks!085064093080086070093094074066087084087068083086081', '默认分类');" 
href="http://blog.163.com/kkl_fly/blog/static/1326770720080161743183/#">默认分类</A></DIV>
<DIV class=c08><NOBR 
id=accessCount_fks!087075082081081069083082095095085085083069083081086068>?</NOBR>次阅读</DIV>
<DIV class=c09> 2008-01-16 01:07</DIV><INPUT 
id=openCom_fks!087075082081081069083082095095085085083069083081086068 
type=hidden value=-1> <INPUT 
id=openShare_fks!087075082081081069083082095095085085083069083081086068 
type=hidden value=-1> </DIV>
<DIV class="g_p_clear g_t_space"></DIV>
<DIV class="g_p_relative g_h_1" 
id=com_fks!087075082081081069083082095095085085083069083081086068>
<DIV 
id=comShow_fks!087075082081081069083082095095085085083069083081086068></DIV>
<DIV class=g_h_1 
id=comPub_fks!087075082081081069083082095095085085083069083081086068></DIV></DIV>
<DIV class=g_t_left 
id=share_fks!087075082081081069083082095095085085083069083081086068 
style="DISPLAY: none"></DIV></DIV></DIV><!-- 生成模块脚本 -->
<SCRIPT language=JavaScript>
	function initPage(){
    	var _$$_blog_perma = new netease.ui.module.Module("日志","_$$_blog_perma_menu",$("_$$_blog_perma"),null,"",{parent:"_$$_module_container_center"});

	}
</SCRIPT>
</DIV>
<DIV class="wsy topbar" id=_$$_TopBar>
<DIV class="g_menu_llk sep" style="PADDING-LEFT: 5px"><A id=rmndtplhm 
href="http://blog.163.com/" target=_blank>网易博客</A><SPAN>|</SPAN> <A 
id=rmndtplfrnd href="http://blog.163.com/findFriend.do?ap=true" 
target=_blank>找朋友</A><SPAN>|</SPAN> <A id=rmndtplcrcl href="http://q.163.com/" 
target=_blank>圈子</A><SPAN>|</SPAN> <A id=rmndtplpp 
href="http://pp.blog.163.com/" target=_blank>拍拍</A><SPAN>|</SPAN> <A 
id=rmndtplsrch href="http://blog.163.com/search.html" target=_blank>搜索</A> 
</DIV>
<DIV class="g_menu_rlk sep" id=_$$_TopBarRight></DIV></DIV>
<DIV class="bgtt wsy">
<DIV class="bg10 wsy" id=_$$_Top_Outer>
<DIV class="bg11 ht wkg" id=_$$_Top_Inner>
<DIV class="flash ht" id=_$$_Top_Flash></DIV>
<DIV class=logo 
onclick="window.location.href='http://blog.163.com/login.html';return false;"></DIV>
<DIV class=title id=_$$_Top_Title></DIV></DIV></DIV>
<DIV class="bg20 wsy">
<DIV class="bg21 hn c02 wkg advnav">
<DIV class="wnl hn"></DIV>
<DIV class="wnr hn"></DIV>
<DIV class="wnc hn">
<DIV class="hn g_menu_nv">
<DIV class="hn item "><A hideFocus onclick="" 
href="http://blog.163.com/kkl_fly/">首页</A> </DIV>
<DIV class="hn item seltag"><A hideFocus onclick="" 
href="http://blog.163.com/kkl_fly/blog/">日志</A> </DIV>
<DIV class="hn item "><A hideFocus onclick="" 
href="http://blog.163.com/kkl_fly/album/">相册</A> </DIV>
<DIV class="hn item "><A hideFocus onclick="" 
href="http://blog.163.com/kkl_fly/music/">音乐<SPAN 
class=icn_new>&nbsp;</SPAN></A> </DIV>
<DIV class="hn item "><A hideFocus onclick="" 
href="http://blog.163.com/kkl_fly/collection/">收藏</A> </DIV>
<DIV class="hn item "><A hideFocus onclick="" 
href="http://blog.163.com/kkl_fly/friends/">好友</A> </DIV>
<DIV class="hn item "><A hideFocus onclick="" 
href="http://blog.163.com/kkl_fly/profile/">关于我</A> 
</DIV></DIV></DIV></DIV></DIV>
<DIV class="bgtf wsy">
<DIV class="bgtf_ hz wkg">
<DIV class="wzl hz"></DIV>
<DIV class="wzr hz"></DIV>
<DIV class="wzc hz">&nbsp;</DIV></DIV></DIV>
<DIV class="bgmt wsy">
<DIV class="bgmt_ hy wkg">
<DIV class="wyl hy"></DIV>
<DIV class="wyr hy"></DIV>
<DIV class="wyc hy"></DIV></DIV></DIV>
<DIV class="bg40 wsy">
<DIV class="bg41 wkg g_p_hide" id=_$$_module_container>
<DIV class="wml bgml g_p_fill"></DIV>
<DIV class="wmr bgmr g_p_fill"></DIV>
<DIV class="wml mtl"></DIV>
<DIV class="wml mbl"></DIV>
<DIV class="wmr mtr"></DIV>
<DIV class="wmr mbr"></DIV>
<DIV class=wmc>
<DIV class="css_inr_1 innerLayout" id=layout_ctrl>
<DIV class="wql hm" id=_$$_module_container_left index="0"></DIV>
<DIV class="wqc hm" id=_$$_module_container_center index="1"></DIV>
<DIV class="wqr hm" id=_$$_module_container_right index="2"></DIV>
<DIV class=g_p_clear></DIV></DIV></DIV></DIV></DIV>
<DIV class="bgmf wsy">
<DIV class="bgmf_ hx wkg">
<DIV class="wxl hx"></DIV>
<DIV class="wxr hx"></DIV>
<DIV class="wxc hx">&nbsp;</DIV></DIV></DIV>
<DIV class="bg50 wsy">
<DIV class="bg51 hf wkg c10">
<DIV class="g_menu_bt fmgtp"><A href="http://corp.163.com/index_gb.html" 
target=_blank>公司简介</A><SPAN>-</SPAN> <A 
href="http://gb.corp.163.com/gb/contactus.html" 
target=_blank>联系方法</A><SPAN>-</SPAN> <A 
href="http://corp.163.com/gb/job/job.html" target=_blank>招聘信息</A><SPAN>-</SPAN> 
<A href="http://help.163.com/?b13abk1" target=_blank>客户服务</A><SPAN>-</SPAN> <A 
href="http://corp.163.com/gb/legal/legal.html" 
target=_blank>相关法律</A><SPAN>-</SPAN> <A onclick="openPopAdvice();return false;" 
href="http://blog.163.com/kkl_fly/blog/static/1326770720080161743183/#">用户反馈</A><SPAN>-</SPAN> 
<A onclick="openPopreport();return false;" 
href="http://blog.163.com/kkl_fly/blog/static/1326770720080161743183/#">举报不良信息</A><SPAN>-</SPAN> 
<LINK title=RSS href="http://blog.163.com/kkl_fly/rss/" type=application/rss+xml 
rel=alternate><A class="p_ p0" href="http://blog.163.com/kkl_fly/rss/" 
target=_blank>&nbsp;</A> </DIV>
<DIV>网易公司版权所有 &copy;1997-2008</DIV></DIV></DIV></DIV></DIV>
<DIV id=_$$_outer_layer></DIV>
<DIV class=g_p_none><INPUT id=$_oppoPageUrlForLogin type=hidden 
value=/kkl_fly/blog/static/1326770720080161743183/edit/> </DIV>
<SCRIPT language=JavaScript>     
  	function initUD(){
       UD.body=$("_$$_inner_layer");
       UD.layer=$("_$$_outer_layer");
       UD.window=$("blog-163-com-body");
       UD.bar=$("theme_selector_pointer");
     }
  </SCRIPT>

<SCRIPT language=JavaScript>
// <![CDATA[
     var g_urlPrefix="";
     function g_initCommon(){
         var _arr = ["rmdtpxt","rmdtplgn"];
         for (var i=_arr.length-1;i>=0;i--){
              _o = $(_arr[i]);
              if(i==0)_o && (_o.onclick=function(){exitAfterLogged();return false;});
              else if(i==1)_o && (_o.onclick=function(){showLoginDlg('blog.163.com');return false;});
         }
         topFromUrsLogin();
     } 
     function g_initUtil(){
     }

// ]]>
</SCRIPT>

<STYLE type=text/css>#messageZone {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 12px; RIGHT: 20px; BACKGROUND: #ffffae; PADDING-BOTTOM: 4px; WIDTH: 100px; PADDING-TOP: 4px; FONT-FAMILY: Arial,Helvetica,sans-serif; POSITION: absolute; TOP: 0px
}
</STYLE>

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

<SCRIPT language=javascript>
  function initAll(){
  	try{
  		initUD();
  		g_initCommon();
  		initFlash(1);
		  showPageTopBar({serverName:'blog.163.com',serverHostName:'blog.163.com'});
  		initPage();
  		window.setTimeout("g_initUtil();",3000);
 	 }catch(e){}
  }
  initAll();
  </SCRIPT>

<SCRIPT language=JavaScript>
  		var ver = new Date().getTime();
  		document.write('<script type="text/javascript" id="visitorInfoJs" src="http://blog.163.com/js/static/visitorInfo.js?host=kkl_fly&mode=prev&channel=blog&blogId=fks!087075082081081069083082095095085085083069083081086068&pubTime=1200416863183&v=' + ver + '"></'+'script>');
  	</SCRIPT>

<SCRIPT language=JavaScript>
  		gLoadPermaLink(1, 'prev', 'fks!087075082081081069083082095095085085083069083081086068', 20, -100, 
			'JPEG格式', 'blog/static/1326770720080161743183', '1326770720080161743183', 'http://q.163.com', 
			0, 1,	'off'
);
			
		topFromUrsLogin();
	</SCRIPT>
</BODY></HTML>

⌨️ 快捷键说明

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