2009年6月18日 星期四

JPG/JPEG 檔案格式

這張是從一個論壇抓出來的

JPEG格式
格式:JFIF(JPEG檔的交換格式)
壓縮:JPEG(灰階影像壓縮比約為10:1;彩色影像約為20:1)
以JPEG文件格式保存的圖像實際上是2個不同格式的混合物:JPEG格式規範本身,用來定義圖像的壓縮方法,並且被包在定議分辨率和顏色模式的圖像數據格式之中。Photoshop和實際上每個能讀取和寫入JPEG文件格式的其他應用程序,以 JFIF文件格式(JPEG文件交換格式, JPEG File Interchonge Format)或與JFIF格式非常象的其他格式保存圖像數據。JFIF文件格式只是將一種圖像格或環繞JPEG壓縮的一種簡單方法,它們沒有其他的更多功能。
最初的JFIF文件格式規範史允許8位灰度圖像和24位RGB圖像;但是Adobe『修改」了此種格式,使之也能處理32位CMYK模式的數據。但是,多數版面設計應用程序實際上不能將 CMYK模式的JPEG圖像分離開,所以 Adobe所做的這個修改的意義並不大。JPEG文件格式允許用可變壓縮的方法,保存8位、24位、32位深度的圖像。例如,當以JPEG格式保存一幅 Photoshop圖像時,Photoshop給出了多種保存選項:低壓縮率,中等壓縮率,高壓縮率及最好的分辨率等級別。實驗證明,當進行印刷或在顯示器上觀察時,JPEG一般可將圖像壓縮為原大小的十分之一而看不出明顯差異。圖像會分解成8×8像素圖像單元的小方塊。這種JPEG失真有時會在新聞圖片中發現,這些圖片在進行電子傳輸前被大大地壓縮了,隨後又以高放大倍率進行了印刷。
JPEG使用了有損壓縮格式,這就使它成為迅速顯示圖像並保存較好分辨率的理想格式。也正是由於JPEG格式可以對掃描或自然圖像進行大幅度的壓縮,利於儲存或通過調製解調器進行傳送,所以在Internet上得到了廣泛的應用。
JPEG格式有一個特殊的變種,名為 「Progressive JPEG」。在創建Progressive JPEG 文件肘,數據是這樣安排的:在裝入圖像時,開始只顯示一個模糊的圖像,隨著數據的裝入,圖像逐步變得清晰。
JPEG格式的主要不足之處也正是它的最大優點。也就是說,有損壓縮算法將JPEG只局限於顯示格式,而且每次保存JPEG格式的圖像時都會丟失一些數據。因此,通常只在創作的最後階段以JPEG格式保存一次圖像即可。
JPEG簡介
微處理機中的存放順序有正序(big endian)和逆序(little endian)之分。正序存放就是高位元組存放在前低位元組在後,而逆序存放就是低位元組在前高位元組在後。例如,十六進位數爲A02B,正序存放就是 A02B,逆序存放就是2BA0。摩托羅拉(Motorola)公司的微處理器使用正序存放,而英代爾(Intel)公司的微處理器使用逆序。JPEG文件中的位元組是按照正序排列的。
________________________________________
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文件交換格式。
JPEG文件使用的顔色空間是CCIR 601推薦標準進行的彩色空間(參看第7章)。在這個彩色空間中,每個分量、每個圖元的電平規定爲255級,用8位代碼表示。從RGB轉換成YCbCr空間時,使用下面的精確的轉換關係:
Y = 256 * E'y
Cb = 256 * [E'Cb] + 128
Cr = 256 * [E'Cr] + 128
其中亮度電平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之間的轉換關係需要按照下面的方法計算。
(1) 從RGB轉換成YCbCr
YCbCr(256級)分量可直接從用8位表示的RGB分量計算得到:
Y = 0.299R + 0.587G + 0.114 B
Cb = - 0.1687R - 0.3313G + 0.5B + 128
Cr = 0.5R - 0.4187G - 0.0813B + 128
需要注意的是不是所有圖像文件格式都按照R0,G0,B0,…… Rn,Gn,Bn的次序存儲樣本資料,因此在RGB文件轉換成JFIF文件時需要首先驗證RGB的次序。
(2) 從YCbCr轉換成RGB
RGB分量可直接從YCbCr(256級)分量計算得到:
R = Y + 1.402 (Cr-128)
G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
B = Y + 1.772 (Cb-128)
在JFIF文件格式中,圖像樣本的存放順序是從左到右和從上到下。這就是說JFIF文件中的第一個圖像樣本是圖像左上角的樣本。
文件結構
JFIF文件格式直接使用JPEG標準爲應用程式定義的許多標記,因此JFIF格式成了事實上JPEG文件交換格式標準。JPEG的每個標記都是由2個位元組組成,其前一個位元組是固定值0xFF。每個標記之前還可以添加數目不限的0xFF填充位元組(fill byte)。下面是其中的8個標記:
1. SOI  0xD8           圖像開始
2. APP0 0xE0           JFIF應用資料塊
3. APPn 0xE1 - 0xEF    其他的應用資料塊(n, 1~15)
4. DQT  0xDB           量化表
5. SOF0 0xC0           幀開始
6. DHT  0xC4           霍夫曼(Huffman)表
7. SOS  0xDA           掃描線開始
8. EOI  0xD9           圖像結束
爲使讀者對JPEG定義的標記一目了然,現將JPEG的標記碼列於表6-05,並保留英文解釋。
表6-05 JPEG定義的標記
Symbol
(符號) Code Assignment
(標記代碼) Deforbiddenion
(說明)
Start Of Frame markers, non-hierarchical Huffman coding
SOF0 0xFFC0 Baseline DCT
SOF1 0xFFC1 Extended sequential DCT
SOF2 0xFFC2 Progressive DCT
SOF3 0xFFC3 Spatial (sequential) lossless
Start Of Frame markers, hierarchical Huffman coding
SOF5 0xFFC5 Differential sequential DCT
SOF6 0xFFC6 Differential progressive DCT
SOF7 0xFFC7 Differential spatial lossless
Start Of Frame markers, non-hierarchical arithmetic coding
JPG 0xFFC8 Reserved for JPEG extensions
SOF9 0xFFC9 Extended sequential DCT
SOF10 0xFFCA Progressive DCT
SOF11 0xFFCB Spatial (sequential) Lossless
Start Of Frame markers, hierarchical arithmetic coding
SOF13 0xFFCD Differential sequential DCT
SOF14 0xFFCE Differential progressive DCT
SOF15 0xFFCF Differential spatial Lossless
Huffman table specification
DHT 0xFFC4 Define Huffman table(s)
arithmetic coding conditioning specification
DAC 0xFFCC Define arithmetic conditioning table
Restart interval termination
RSTm 0xFFD0~0xFFD7 Restart with modulo 8 counter m
Other marker
SOI 0xFFD8 Start of image
EOI 0xFFD9 End of image
SOS 0xFFDA Start of scan
DQT 0xFFDB Define quantization table(s)
DNL 0xFFDC Define number of lines
DRI 0xFFDD Define restart interval
DHP 0xFFDE Define hierarchical progression
EXP 0xFFDF Expand reference image(s)
APPn 0xFFE0~0xFFEF Reserved for application use
JPGn 0xFFF0~0xFFFD Reserved for JPEG extension
COM 0xFFFE Comment
Reserved markers
TEM 0xFF01 For temporary use in arithmetic coding
RES 0xFF02~0xFFBF Reserved
JPEG文件由下面的8個部分組成:
(1) 圖像開始SOI(Start of Image)標記
(2) APP0標記(Marker)
① APP0長度(length)
② 識別字(identifier)
③ 版本號(version)
④ X和Y的密度單位(units=0:無單位;units=1:點數/英寸;units=2:點數/釐米)
⑤ X方向圖元密度(X density)
⑥ Y方向圖元密度(Y density)
⑦ 縮略圖水平圖元數目(thumbnail horizontal pixels)
⑧ 縮略圖垂直圖元數目(thumbnail vertical pixels)
⑨ 縮略圖RGB點陣圖(thumbnail RGB bitmap)
(3) APPn標記(Markers),其中n=1~15(任選)
① APPn長度(length)
② 由於詳細資訊(application specific information)
(4) 一個或者多個量化表DQT(difine quantization table)
① 量化表長度(quantization table length)
② 量化表數目(quantization table number)
③ 量化表(quantization table)
(5) 幀圖像開始SOF0(Start of Frame)
① 幀開始長度(start of frame length)
② 精度(precision),每個顔色分量每個圖元的位元數(bits per pixel per color component)
③ 圖像高度(image height)
④ 圖像寬度(image width)
⑤ 顔色分量數(number of color components)
⑥ 對每個顔色分量(for each component)
o ID
o 垂直方向的樣本因數(vertical sample factor)
o 水平方向的樣本因數(horizontal sample factor)
o 量化表號(quantization table#)
(6) 一個或者多個霍夫曼表DHT(Difine Huffman Table)
① 霍夫曼表的長度(Huffman table length)
② 類型、AC或者DC(Type, AC or DC)
③ 索引(Index)
④ 位表(bits table)
⑤ 值表(value table)
(7) 掃描開始SOS(Start of Scan)
① 掃描開始長度(start of scan length)
② 顔色分量數(number of color components)
③ 每個顔色分量
o ID
o 交流係數表號(AC table #)
o 直流係數表號(DC table #)
④ 壓縮圖像資料(compressed image data)
(8) 圖像結束EOI(End of Image)
表6-06表示了APP0域的詳細結構。有興趣的讀者可通過UltraEdit或者PC TOOLS等工具軟體打開一個JPG圖像文件,對APP0的結構進行分析和驗證。
表6-06 JFIF格式中APP0域的詳細結構
偏移 長度 內容 塊的名稱 說明
0 2 byte 0xFFD8 (Start of Image,SOI) 圖像開始
2 2 byte 0xFFE0 APP0(JFIF application segment) JFIF應用資料塊
4 2 bytes   length of APP0 block APP0塊的長度
6 5 bytes   "JFIF"+"0" 識別APP0標記
11 1 byte   主要版本號(如版本1.02中的1)
12 1 byte   次要版本號(如版本1.02中的02)
13 1 byte  
and Y densities> X和Y的密度單位
units=0:無單位
units=1:點數/英寸
units=2:點數/釐米
14 2 bytes   水平方向圖元密度
16 2 bytes   垂直方向圖元密度
18 1 byte   縮略圖水平圖元數目
19 1 byte   縮略圖垂直圖元數目
3n   <> 縮略RGB點陣圖(n爲縮略圖的圖元數)
Optional JFIF extension APP0 marker segment(s) 任選的JFIF擴展APP0標記段
……   ……  
2 byte 0xFFD9 (EOI) end-of-file 圖像文件結束標記


===================================

如果有侵犯到您的權利 請告知 會馬上刪除

MSN 將圖片畫出來 以手繪訊息送出去

MSN 將圖片畫出來 以手繪訊息送出去

之前朋友給了一個軟體

他可以將圖檔以手繪的方式畫到MSN手繪訊息上面

這樣就可以傳出酷炫手繪訊息

(別人還以為畫出來的哩!! 好像有點誇張)。

這是畫出來的效果,雖然是單一色系的,不過也不錯啦!!
寄件者 FQstory

這軟體主要是先拍照

然後選畫到的地方

再點開始畫

就會開始一筆一畫的畫出來

(小畫家也可以= =)

===================================

真的不錯玩喔 大家可以GOOGLE 找找