⑴ 如何使用libjpeg
本文只介紹jpeg壓縮的相關內容,剛開始我貪圖省事,採用微 軟 的GDI Plus提供的功能,很是方便,先獲取jpg圖像的編碼,然後根據圖像的點陣圖數據創建一個Bitmap類的對象,再保存圖像為jpg格式就行了。但是我對 GDI+還是很信任,總感覺不踏實(沒有理由的),我們的系統一旦安裝就要長期運行,我就是擔心長期運行一段時間後GDI+會出問題,結果也證實了我的擔 心,我們實際使用的10套系統中有一套,連續運行3-5天後,GDI+就會崩潰,於是我決心採用IJG JPEG Library。您可以到
站下載libjpeg的源碼, IJG JPEG Library就是jpeg壓縮庫,是以源碼的形式提供給軟體開發人員的,當然在軟體包里也有編譯好的庫文件,我們這里就只用到其中的 libjpeg.lib,jconfig.h,jmorecfg.h,jpeglib.h這幾個文件,下面我就介紹一下怎樣在自己的程序里嵌入圖像壓縮功 能。
一、建立編譯環境
所謂建立編譯環境,其實非常簡單,就是把上面提到的4個文件拷 貝到你的項目文件夾下,把libjpeg.lib添加到你的項目中,然後在你完成壓縮功能的那個文件里加入#include "jpeglib.h",需要注意的是,libjpeg.lib是用c語言開發的,如果要用在你的C++程序里,需要用到extern "C",如下:
// TestLibjpeg.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "memory.h"
extern "C" {
#include "jpeglib.h"
}
二、壓縮步驟
1、申請並初始化jpeg壓縮對象,同時要指定錯誤處理器
struct jpeg_compress_struct jcs;
// 聲明錯誤處理器,並賦值給jcs.err域
struct jpeg_error_mgr jem;
jcs.err = jpeg_std_error(&jem);
jpeg_create_compress(&jcs);
2、指定壓縮後的圖像所存放的目標文件,注意,目標文件應以二進制模式打開
f=fopen("03.jpg","wb");
if (f==NULL)
{
delete [] data;
delete [] pDataConv;
return 0;
}
jpeg_stdio_dest(&jcs, f);
3、設置壓縮參數,主要參數有圖像寬、高、色彩通道數(1:索引圖像,3:其他),色彩空間(JCS_GRAYSCALE表示灰度圖,JCS_RGB表示彩色圖像),壓縮質量等,如下:
jcs.image_width = nWidth; // 為圖的寬和高,單位為像素
jcs.image_height = nHeight;
jcs.input_components = 1; // 在此為1,表示灰度圖, 如果是彩色點陣圖,則為3
jcs.in_color_space = JCS_GRAYSCALE; //JCS_GRAYSCALE表示灰度圖,JCS_RGB表示彩色圖像
jpeg_set_defaults(&jcs);
jpeg_set_quality (&jcs, 80, true);
需要注意的是,jpeg_set_defaults函數一定要等設 置好圖像寬、高、色彩通道數計色彩空間四個參數後才能調用,因為這個函數要用到這四個值,調用jpeg_set_defaults函數後,jpeglib 庫採用默認的設置對圖像進行壓縮,如果需要改變設置,如壓縮質量,調用這個函數後,可以調用其它設置函數,如jpeg_set_quality函數。其實 圖像壓縮時有好多參數可以設置,但大部分我們都用不著設置,只需調用jpeg_set_defaults函數值為默認值即可。
4、上面的工作準備完成後,就可以壓縮了,壓縮過程非常簡單, 首先調用jpeg_start_compress,然後可以對每一行進行壓縮,也可以對若干行進行壓縮,甚至可以對整個的圖像進行一次壓縮,壓縮完成後, 記得要調用jpeg_finish_compress函數,如下:
jpeg_start_compress(&jcs, TRUE);
JSAMPROW row_pointer[1]; // 一行點陣圖
int row_stride; // 每一行的位元組數
row_stride = jcs.image_width; // 如果不是索引圖,此處需要乘以3
// 對每一行進行壓縮
while (jcs.next_scanline < jcs.image_height) {
row_pointer[0] = & pDataConv[jcs.next_scanline * row_stride];
jpeg_write_scanlines(&jcs, row_pointer, 1);
}
jpeg_finish_compress(&jcs);
5、最後就是釋放壓縮工作過程中所申請的資源了,主要就是jpeg壓縮對象,由於在本例中我是直接用的局部變數,所以只需調用jpeg_destroy_compress這個函數即可,如下:
jpeg_destroy_compress(&jcs);
三、解壓縮步驟
解壓縮步驟與壓縮步驟非常相似,只是解壓縮對象為jpeg_decompress_struct類型,步驟如下:
1、聲明並初始化解壓縮對象,同時制定錯誤信息管理器
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
2、打開jpg圖像文件,並指定為解壓縮對象的源文件
FILE *f = fopen(strSourceFileName,"rb");
if (f==NULL)
{
printf("Open file error!\n");
return;
}
//
jpeg_stdio_src(&cinfo, f);
3、讀取圖像信息
jpeg_read_header(&cinfo, TRUE);
4、根據圖像信息申請一個圖像緩沖區
data = new BYTE cinfo.image_width*cinfo.image_height*cinfo.num_components];
5、開始解壓縮
jpeg_start_decompress(&cinfo);
JSAMPROW row_pointer[1];
while (cinfo.output_scanline < cinfo.output_height)
{
row_pointer[0] = &data[(cinfo.output_height - cinfo.output_scanline-1)*cinfo.image_width*cinfo.num_components];
jpeg_read_scanlines(&cinfo,row_pointer ,
1);
}
jpeg_finish_decompress(&cinfo);
6、釋放資源
jpeg_destroy_decompress(&cinfo);
fclose(f);
好了,利用IJG JPEG Library進行圖像壓縮就介紹到這里,希望對大家有所幫助,實例代碼已經實現了圖像的壓縮和解壓縮的全部功能,命令格式 為:「TestLibjpeg.exe j|j24|b 源文件名 目標文件名」,其中,j選項將源文件壓縮為jpg格式,不改變色彩模式,j24選項將源文件壓縮為24為jpg格式,b選項將源文件解壓縮為bmp格式, 該實例並沒有提供文件有效性的驗證,如果要引入自己的代碼,請自己實現文件有效性的驗證。
⑵ 如何把gif圖片換成代碼
上傳到這個相冊網站吧,支持GIF格式的,能生成外鏈代碼地址。http://www.yupoo.com/
上傳完後點開圖片》右側就有「拷貝外鏈地址」點開它》就有HTML和UBB代碼。
⑶ TIFF、JPEG、CGM、EMF、PNG分別是什麼格式的文件
常見的擴展名】我就略說些經常遇到的,但並不是人人都認識的擴展名:
〔*.exe‖可執行文件;直接打開〕
〔*.rar‖一種壓縮包;用WinRAR打開〕
〔*.zip‖一種壓縮包;用WinRAR打開,或者WinXP也可以直接打開〕
〔*.iso‖虛擬光碟機;用WinRAR打開,也可用其他虛擬光碟機軟體〕
〔*.doc‖word文檔;用Office Word打開〕
〔*.ppt‖幻燈片; 用Office PowerPiont打開〕
〔*.xls‖電子表格;用Office Excel打開〕
〔*.wps‖WPS文檔; 用金山WPS打開〕
〔*.txt‖文本文檔;默認用記事本打開〕
〔*.lrc‖動態歌詞;可以用記事本打開〕
〔*.rm,*.rmvb‖高清視頻;可以用RealOnePlayer打開〕
〔*.mp3,*.wma,*.wav‖一些音樂〕
〔*.jpg,*.bmp,*.gif‖一些圖片,其中gif可以是動態的〕
〔*.wfs‖Flash文件;可以用IE打開,也可用FlashPlayer打開〕
〔*.torrent‖BT文件;可以用BitComet打開〕
A
ACE:Ace壓縮檔案格式
ACT:Microsoft office助手文件
AIF,AIFF:音頻互交換文件,Silicon Graphic and Macintosh應用程序的聲音格式
ANI:Windows系統中的動畫游標
ARC:LH ARC的壓縮檔案文件
ARJ:Robert Jung ARJ壓縮包文件
ASD:Microsoft Word的自動保存文件;Microsoft高級流媒體格式(microsoft advanced streaming
format,ASF)的描述文件;可用NSREX打開 Velvet Studio例子文件
ASF:Microsoft高級流媒體格式文件
ASM:匯編語言源文件,Pro/E裝配文件
ASP:動態網頁文件;ProComm Plus安裝與連接腳本文件;Astound介紹文件
AST:Astound多媒體文件;ClarisWorks「助手」文件
Axx:ARJ壓縮文件的分包序號文件,用於將一個大文件壓至幾個小的壓縮包中(xx取01-99的數字)
A3L:Authorware 3.x庫文件
A4L:Authorware 4.x庫文件
A5L:Authorware 5.x庫文件
A3M,A4M:Authorware Macintosh未打包文件
A3W,A4W,A5W:未打包的Authorware Windows文件
B
BAK:備份文件
BAS:BASIC源文件
BAT:批處理文件
BIN:二進制文件
BINHex:蘋果的一種編碼格式
BMP:Windows或OS/2點陣圖文件
BOOK:Adobe FrameMaker Book文件
BOX:Lotus Notes的郵箱文件
BPL:Borlard Delph 4打包庫
BSP:Quake圖形文件
BUN:CakeWalk 聲音捆綁文件(一種MIDI程序)
C
C0l:台風波形文件
CAB:Microsoft壓縮檔案文件
CAD:Softdek的Drafix CAD文件
CAM:Casio照相機格式
CAP:壓縮音樂文件格式
CAS:逗號分開的ASCⅡ文件
CCB:Visual Basic動態按鈕配置文件
CCH:Corel圖表文件
CCO:CyberChat數據文件
CCT:Macromedia Director Shockwave投影
CDA:CD音頻軌道
CDF:Microsoft頻道定義格式文件
CDI:Philip的高密盤交互格式
CDM:Visual dBASE自定義數據模塊文件
CDR:CorelDRAW繪圖文件;原始音頻CD數據文件
CDT:CorelDRAW模板
CDX:CorelDRAW壓縮繪圖文件;Microsoft Visual FoxPro索引文件
CFG:配置文件
CGI:公共網關介面腳本文件
CGM:計算機圖形元文件
CH:OS/2配置文件
CHK:由Windows磁碟碎片整理器或磁碟掃描保存的文件碎片
CHM:編譯過的HTML文件
CHP:Ventura Publisher章節文件
CHR:字元集(字體文件)
CHT:ChartViem文件;Harvard Graphics矢量文件
CIF:Adaptec CD 創建器 CD映像文件
CIL:Clip Gallery下載包
CIM:SimCity 2000文件
CIN:OS/2改變控制文件用於跟蹤INI文件中的變化
CLASS:Java類文件
CLP:Windows 剪貼板文件
CLL:Crick Software Clicker文件
CLS:Visual Basic類文件
CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件
CPI:Microsoft MS-DOS代碼頁信息文件
CPL:控制面板擴展名,Corel顏色板
CPP:C++代碼文件
CPR:Corel提供說明書文件
CPT:Corel 照片-繪畫圖像
CST:Macromedia Director Cast文件
CUR:Windows游標文件
D
DBF:dBASE文件,一種由Ashton-Tate創建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和類似資料庫或與資料庫有關產品識別;可用數據文件(能被Excel
97打開);Oracle 8.1.x表格空間文件
DBX:DataBearn圖像;Microsoft Visual FoxPro表格文件
DCT:Microsoft Visual FoxPro資料庫容器
DCU:Delphi編譯單元文件
DCX:Microsoft Visual FoxPro資料庫容器;基於PCX的傳真圖像;宏
DIR:MacromediaDirector文件
DLL:動態鏈接庫
DOC:FrameMaker或FrameBuilder文檔;Word Star文檔、Word
Perfect文檔、Microsoft:Word文檔;DisplayWrite文檔
DOT:Microsoft Word文檔模板
DPL:Borland Delph 3壓縮庫
DRV:驅動程序
DRW:Micrografx Designer/Draw;Pro/E繪畫文件
DSF:Micrografx Designer VFX文件
DSG:DOOM保存的文件
DSM:Dynamic Studio音樂模塊(MOD)文件
DSP:Microsoft Developer Studio工程文件
DSQ:Corel QUERY(查詢)文件
DST:刺綉機圖形文件
DSW:Microsoft Developer Studio工作區文件
DTA:World Bank(世界銀行)的STARS數據文件
DTD:SGML文檔類型定義(DTD)文件
DTED:地面高度數字數據(圖形的數據格式)文件
DTF:Symantec Q&A相關的資料庫數據文件
DTM:DigiTrakker模塊文件
DUN:Microsoft拔號網路導出文件
DV:數字視頻文件(MIME)
DWG:AutoCAD工程圖文件;AutoCAD或Generic CADD老版本的繪圖格式
DXR:Macromedia Director受保護(不可編輯)電影文件
E
EDA:Ensoniq ASR磁碟映像
EDD:元素定義文檔(FrameMaker+SGML文檔)
EDE:Ensoniq EPS磁碟映像
EDK:Ensoniq KT磁碟映像
EDQ:Ensoniq SQ1/SQ2/Ks32磁碟映像
EDS:Ensoniq SQ80磁碟映像
EDV:Ensoniq VFX-SD磁碟映像
EFA:Ensoniq ASR文件
EFE:Ensoniq EPS文件
EFK:Ensoniq KT文件
EFQ:Ensoniq SQ1/SQ2/Ks32文件
EFS:Ensoniq SQ80文件
EFV:Ensoniq VFX-SD文件
EMD:ABT擴展模塊
EMF:Windows增強元文件
EML:Microsoft Outlook Express郵件消息(MIME RTC822)文件
EXE:可執行文件(程序)
F
FAV:Microsoft Outlook導航條
FAX:傳真類型圖像
FCD:虛擬CD-ROM
FDF:Adobe Acrobat表單文檔文件
FLA:Macromedia Flash電影
FND:Microsoft Explorer保存的搜索文件(Find applet)
FON:系統字體
FRT:Microsoft FoxPro報表文件
FRX:Visual Basic表單文本;Microsoft FoxPro報表文件
FXP:經Microsoft FoxPro編譯的源文件
G
GDM:鈴聲、口哨聲和聲音板模塊格式
GetRight:GetRight未完成的下載文件
GHO:Norton 克隆磁碟映像
GID:Windows 95全局索引文件(包括幫助狀態)
GIF:CompuServe點陣圖文件
GL:動畫格式
GRP:程序管理組
H
HEX:Macintosh BinHex2.0文件
HLP:幫助文件;Date CAD Windows幫助文件
HPP:C++程序頭文件
HQX:Macintosh BinHex 4.0文件
HT:HyperTerminal(超級終端)
HTM,HTML:超文本文檔
HTT:Microsoft超文本模板
HTX:擴展HTML模板
I
ICO:Windows圖標
IDX:Microsoft FoxPro相關資料庫索引文件;Symantec Q&A相關資料庫索引文件;Microsoft Outlook
Express文件
IMG:GEM映像
INF:信息文件
INI:初始化文件;Mwave DSP Synth的「nwsynth.ini」 GMS安裝;Cravis Ultrasound bank安裝
INP:Oracle 3.0版或早期版本的表單源代碼
INRS:INRS遠程通信聲頻
INS:InstallShield安裝腳本;X-Internet簽字文件;Ensoniq EPS字簇設備;Cell/ⅡMAC/PC抽樣設備
INT:中間代碼,當一個源程序經過語法檢查後編譯產生一個可執行代碼
IOF:Findit文檔
IQY:Microsoft Internet查詢文件
ISO:根據ISD 9660有關CD-ROM文件系統標准列出CD-ROM上的文件
ISP:X-Internet簽字文件
IST:數字跟蹤設備文件
ISU:InstallShield卸裝腳本
IT:脈沖跟蹤系統音樂模塊(MOD)文件
ITI:脈沖跟蹤系統設備
ITS:脈沖跟蹤系統抽樣,Internet文檔位置
IV:Open Inventor中使用的文件格式
IVD:超過20/20微觀數據維數或變數等級文件
IVP:超過20/20的用戶子集配置文件
IVT:超過20/20表或集合數據文件
IVX:超過20/20微數據目錄文件
IW:Idlewild屏幕保護程序
IWC:Install Watch文檔
J
J62:Ricoh照相機格式
JAR:Java檔案文件(一種用於applet和相關文件的壓縮文件)
JAVA:Java源文件
JAR:Java檔案文件(一種用於applet和相關文件的壓縮文件)
JAVA:Java源文件
JFF,JFIF,JIF:JPEG文件
JPE,JPEG,JPG:JPEG圖形文件
JS:JavaScript源文件
JSP:HTML網頁,其中包含有對一個Java servlet的參考
K
KAR:卡拉OK MIDI文件(文本+MIDI)
L
LAB:Visual dBASE標簽文件
LBT,LBX:Microsoft FoxPro標簽文件
LDB:Microsoft Access加鎖文件
LHA:LZH更換文件後綴
LOG:日誌文件
LZH:LH ARC壓縮檔案
M
M1V:MPEG相關文件(MIME"mpeg"類型)
M3D:Corel Motion 3D動畫文件
M3U:MPEG URL(MIME聲音文件)
MAM:Microsoft Access宏
MAQ:Microsoft Access查詢文件
MAR:Microsoft Access報表文件
MBX:Microsoft Outlook保存email格式;Eudora郵箱
MCW:Microsoft Word的Macintosh文檔
MDB:Microsoft Access資料庫
MDN:Microsoft Access空資料庫模板
MDW:Microsoft Access工作組文件
MID:MIDI音樂
MMM:Microsoft多媒體電影
MOV:QuickTime for Windows電影
MP2:第二層MPEG音頻文件
MP3:第三層MPEG音頻文件
MPA:MPEG相關文件,MIME「mpeg類型」
MPE,MPEG,MPG:MPEG動畫文件
MPP:Microsoft工程文件;CAD繪圖文件格式
MPR:Microsoft FoxPro菜單(已編譯)
MSI:Windows 安裝器包
MSN:Microsoft 網路文檔;Descent Mission文件
O
OBD:Microsoft Office活頁夾
OBJ:對象文件
OBZ:Microsoft Office活頁夾向導
OCX:Microsoft對象鏈接與嵌入定製控制項
ODS:Microsoft Outlook Express郵箱文件
OFT:Microsoft Outlook模板
OPX:OPL擴展DLL(動態鏈接庫)
OSS:Microsoft Office查找文件
OST:Microsoft Exchange / Outlook 離線文件
P
PAL:壓縮文件
PART:Go!Zilla部分下載文件
PAS:Pascal源代碼
PCS:PICS動畫文件
PDF:Adobe Acrobat
可導出文檔格式文件(可用Web瀏覽器顯示);Microsoft系統管理伺服器包定義文件;NetWare列印機定義文件
PHP,PHP3:包含有PHP腳本的HTML網頁
PHTML:包含有PHP腳本的HTML網頁;由Perl分析解釋的HTML
PM5:Pagemaker 5.0文件
PM6:Pagemaker 6.0文件
PPS:Microsoft Powerpoint幻燈片放映
PPT:Microsoft Powerpoint演示文稿
PRF:Windows系統文件,Macromedia導演設置文件
PSD:Adobe photoshop點陣圖文件
PSM:Protracker Studio模型格式;Epic游戲的源數據文件
PST:Microsoft Outlook個人文件夾文件
PWL:Windows 95口令列表文件
Q
QIF:QuickTime相關圖像(MIME);Quicken導入文件
QT,QTM:QuickTime電影
QTI,QTIF:QuickTime相關圖像
QTP:QuickTime優先文件
QTS:Mac PICT圖像文件;QuickTime相關圖像
QTX:QuickTime相關圖像
R
RA:RealAudio聲音文件
RAM:RealAudio元文件
RAR:RAR壓縮檔案(Eugene Roshall格式)
REC:錄音機宏;RapidComm聲音文件
REG:注冊表文件
REP:Visual dBASE報表文件
RES:Microsoft Visual C++資源文件
RM:RealAudio視頻文件
RMF:Rich Map格式(3D游戲編輯器使用它來保存圖)
ROM:基於盒式磁帶的家庭游戲模擬器文件(來自Atari
2600、Colecovision、Sega、Nintendo等盒式磁帶里的ROM完全拷貝,在兩個模擬器之間不可互修改)
Rxx:多卷檔案上的RAR壓縮文件(xx=1~99間的一個數字)
S
SAV:游戲保存文件
SB:原始帶符號位元組(8位)數據
SBK:Creative Labs的Soundfont 1.0 Bank文件;(Soundb laster)/EMU SonndFont v1.x
Bank文件
SBL:Shockwave Flash對象文件
SCF:Windows Explorer命令文件
SCH:Microsoft Schele+1
SCP:撥號網路腳本文件
SCR:Windows屏幕保護;傳真圖像;腳本文件
SFX:RAR自解壓檔案
SHTML:含有伺服器端包括(SSI)的HTML文件
SPL:Shockwave Flash對象;DigiTrakker抽樣
SQL:Informix SQL查詢;通常被資料庫產品用於SQL查詢(腳本、文本、二進制)的文件擴展名
STM:.shtml的短後綴形式,含有一個服務端包括(SSI)的HTML文件;Scream Tracker V2音樂模塊(MOD)文件
STR:屏幕保護文件
SWA:在Macromedia導演文件(MP3文件)中的Shockwave聲音文件
SWF:Shockwave Flash對象
SYS:系統文件
T
T64:Commodore 64模擬器磁帶映像文件
THEME:Windows 95桌面主題文件
TIF,TIFF:標簽圖像文件格式(TIFF)點陣圖
TMP:Windows臨時文件
TRM:終端文件
TXT:ASCⅡ文本格式的聲音數據
TZ:老的壓縮格式文件
V
VBA:VBase文件
VBP:Microsoft Visual Basic工程文件
VBW:Microsoft Visual Basic工作區文件
VBX:Microsoft Visual Basic用戶定製控制項
VQE,VQL:Yamaha Sound-VQ定位器文件
VQF:Yamaha Sound-VQ文件(可能出現標准)
VRF:Oracle 7配置文件
VSL:下載列表文件(GetRight)
W
WAB:Microsoft Outlook文件
WAD:包含有視頻、玩家水平和其他信息的DOOM游戲的大文件
WAL:Quake 2正文文件
WAV:Windows波形聲形
WBK:Microsoft Word備份文件
WFM:Visual dBASE Windows表單
WFN:在CorelDRAW中使用的符號
WIZ:Microsoft Word向導
WRL:虛擬現實模型
WWL:Microsoft Word內插器文件
X
XLK:Microsoft Excel備份
XLL:Microsoft Excel內插器文件
XLM:Microsoft Excel宏
XLS:Microsoft Excel工作單
XLT:Microsoft Excel模板
XLV:Microsoft Excel VBA模塊
XLW:Microsoft Excel工作簿/工作區
Z
ZAP:Windows軟體安裝配置文件
ZIP:Zip文件
⑷ JPEG格式的壓縮標准
JPEG是由國際標准組織(ISO)和國際電話電報咨詢委員會(CCITT)為靜態圖像所創建的第一個國際數字圖像壓縮標准,也是至今一直在使用的、應用最廣的圖像壓縮標准。JPEG由於可以提供有損壓縮,因此壓縮比可以達到其他傳統壓縮演算法無法比擬的程度。
JPEG的壓縮模式有以下幾種:
順序式編碼(Sequential Encoding)
一次將圖像由左到右、由上到下順序處理。
遞增式編碼(Progressive Encoding)
當圖像傳輸的時間較長時,可將圖像分數次處理,以從模糊到清晰的方式來傳送圖像(效果類似GIF在網路上的傳 輸)。
無有損編碼(Lossless Encoding)
階梯式編碼(Hierarchical Encoding)
圖像以數種解析度來壓縮,其目的是為了讓具有高解析度的圖像也可以在較低解析度的設備上顯示。
在Independent JPEG Group所提供的源碼上,有jpegtran程序,就提供了優化Huffman,轉成漸進式,鏡射,旋轉這些無損耗轉換。
⑸ JPG圖像文件是壓縮格式的文件嗎
是的。
JPEG一個軟體開發聯合會組織制定,是一種有損壓縮格式,能夠將圖像壓縮在很小的儲存空間,圖像中重復或不重要的資料會被丟失,因此容易造成圖像數據的損傷。
JPEG壓縮技術十分先進,它可以用有損壓縮方式去除冗餘的圖像數據,換句話說,就是可以用較少的磁碟空間得到較好的圖像品質。而且JPEG是一種很靈活的格式,具有調節圖像質量的功能,它允許用不同的壓縮比例對文件進行壓縮。
(5)jpeg源碼下載擴展閱讀:
壓縮標准
基於DCT的順序編碼模式。根據DCT變換原理,按從上到下、從左到右的順序對圖像數據進行壓縮編碼。當信息傳送到接收端時,首先按照上述規律進行解碼,從而還原圖像。在此過程中存在信息丟失,因此這是一種有損圖像壓縮編碼。
基於DCT的累進編碼模式。它也是以DCT變換為基礎的,但是其掃描過程不同。它通過多次掃描的方法來對一幅圖像進行數據壓縮。其描述過程採取由粗到細逐步累加的方式進行。圖像還原時,在屏幕上首先看到的是圖像的大致情況,而後逐步地細化,直到全部還原出來為止。
基於DCT的分層編碼模式。這種模式是以圖像解析度為基準進行圖像編碼的。它首先是從低解析度開始,逐步提高解析度,直至與原圖像的解析度相同為止。