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"><Xdensity></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"><Ydensity></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"><Xthumbnail></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"><Ythumbnail></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">< Thumbnail RGB bitmap></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"> </P>
<P style="TEXT-INDENT: 2em"> JPEG文件使用的颜色空间是CCIR
601推荐标准进行的彩色空间(参看第7章)。在这个彩色空间中,每个分量、每个像素的电平规定为255级,用8位代码表示。从RGB转换成YCbCr空间时,使用下面的精确的转换关系:</P>
<P style="TEXT-INDENT: 2em"> Y = 256 * E'y</P>
<P style="TEXT-INDENT: 2em"> Cb = 256 * [E'Cb] + 128</P>
<P style="TEXT-INDENT: 2em"> Cr = 256 * [E'Cr] + 128</P>
<P style="TEXT-INDENT: 2em"> 其中亮度电平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"> (1) 从RGB转换成YCbCr</P>
<P style="TEXT-INDENT: 2em">
YCbCr(256级)分量可直接从用8位表示的RGB分量计算得到:</P>
<P style="TEXT-INDENT: 2em">
Y = 0.299R + 0.587G + 0.114B</P>
<P style="TEXT-INDENT: 2em"> Cb =
-0.1687R - 0.3313G + 0.5B + 128</P>
<P style="TEXT-INDENT: 2em"> Cr = 0.5R - 0.4187G - 0.0813B + 128</P>
<P style="TEXT-INDENT: 2em"> 需要注意的是不是所有图像文件格式都按照R0,G0,B0,……
Rn,Gn,Bn的次序存储样本数据,因此在RGB文件转换成JFIF文件时需要首先验证RGB的次序。</P>
<P style="TEXT-INDENT: 2em"> (2) 从YCbCr转换成RGB </P>
<P style="TEXT-INDENT: 2em"> RGB分量可直接从YCbCr(256级)分量计算得到:</P>
<P style="TEXT-INDENT: 2em"> 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">
在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。这就是说JFIF文件中的第一个图像样本是图像左上角的样本。 </P>
<OL>
<LI>SOI 0xD8 图像开始
<LI>APP0 0xE0 JFIF应用数据块
<LI>APPn 0xE1 - 0xEF 其他的应用数据块(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"> </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"> </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> </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"> </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"> </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> </A> </DIV>
<DIV>网易公司版权所有 ©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 + -
显示快捷键?