資源描述:
《BMP圖片轉(zhuǎn)JPEG圖片C程序源代碼.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、//ABMPtruecolortoJPEGencoder//Copyright1999CristianCuturicu#include#include#include#include"jtypes.h"#include"jglobals.h"#include"jtables.h"voidwrite_APP0info()//NothingtooverwriteforAPP0info{writeword(APP0info.marker);writeword(APP0i
2、nfo.length);writebyte('J');writebyte('F');writebyte('I');writebyte('F');writebyte(0);writebyte(APP0info.versionhi);writebyte(APP0info.versionlo);writebyte(APP0info.xyunits);writeword(APP0info.xdensity);writeword(APP0info.ydensity);writebyte(APP0info.thumbnwidth);
3、writebyte(APP0info.thumbnheight);}voidwrite_SOF0info()//Weshouldoverwritewidthandheight{writeword(SOF0info.marker);writeword(SOF0info.length);writebyte(SOF0info.precision);writeword(SOF0info.height);writeword(SOF0info.width);writebyte(SOF0info.nrofcomponents);wri
4、tebyte(SOF0info.IdY);writebyte(SOF0info.HVY);writebyte(SOF0info.QTY);writebyte(SOF0info.IdCb);writebyte(SOF0info.HVCb);writebyte(SOF0info.QTCb);writebyte(SOF0info.IdCr);writebyte(SOF0info.HVCr);writebyte(SOF0info.QTCr);}voidwrite_DQTinfo(){BYTEi;writeword(DQTinfo
5、.marker);writeword(DQTinfo.length);writebyte(DQTinfo.QTYinfo);for(i=0;i<64;i++)writebyte(DQTinfo.Ytable[i]);writebyte(DQTinfo.QTCbinfo);for(i=0;i<64;i++)writebyte(DQTinfo.Cbtable[i]);}voidset_quant_table(BYTE*basic_table,BYTEscale_factor,BYTE*newtable)//Setquanti
6、zationtableandzigzagreorderit{BYTEi;longtemp;for(i=0;i<64;i++){temp=((long)basic_table[i]*scale_factor+50L)/100L;//limitthevaluestothevalidrangeif(temp<=0L)temp=1L;if(temp>255L)temp=255L;newtable[zigzag[i]]=(BYTE)temp;}}voidset_DQTinfo(){BYTEscalefactor=50;//scal
7、efactorcontrolsthevisualqualityoftheimage//thesmalleristhebetterimagewe'llget,andthesmaller//compressionwe'llachieveDQTinfo.marker=0xFFDB;DQTinfo.length=132;DQTinfo.QTYinfo=0;DQTinfo.QTCbinfo=1;set_quant_table(std_luminance_qt,scalefactor,DQTinfo.Ytable);set_quan
8、t_table(std_chrominance_qt,scalefactor,DQTinfo.Cbtable);}voidwrite_DHTinfo(){BYTEi;writeword(DHTinfo.marker);writeword(DHTinfo.length);writebyte(DHTinfo.HTYDCi