锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 棣栧厛錛岀粰Static鎺т歡娣誨姞涓涓狢ontrol鍙橀噺錛圛D瑕佹敼浜嗕互鍚庢墠鑳芥坊鍔犲彉閲忥紝涔熷氨鏄ID涓嶈兘涓篒DC_STATIC錛夛紝鏈緥涓簃_staticTest銆?br>鐒跺悗錛岀敤ModifyStyle鍑芥暟淇敼Static鎺т歡鐨凷tyle錛岃瀹冨彲浠ユ樉紺哄浘鐗囷細 m_staticTest.ModifyStyle(0, SS_BITMAP | SS_CENTERIMAGE); 鏈鍚庯紝灝辨槸Load鏂囦歡鏄劇ず鍑烘潵錛?/p>
CRect rect; // 涓嬮潰鐨勬柟娉曟槸鎸夌収Static鎺т歡鐨勫ぇ灝忔樉紺篵mp錛屽鏋滆瀹夎鍥劇墖瀹為檯澶у皬鏄劇ず錛岀敤榪欎釜鏂規硶Load鍥劇墖錛?br>// HBITMAP hBmp = (HBITMAP)::LoadImage(0, _T("D:\\test.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); m_staticTest.SetBitmap(hBmp); 銆銆涓銆佸緩绔嬬紪璇戠幆澧?/p>
銆銆鎵璋撳緩绔嬬紪璇戠幆澧冿紝鍏跺疄闈炲父綆鍗曪紝灝辨槸鎶婁笂闈㈡彁鍒扮殑錛斾釜鏂囦歡鎷瘋礉鍒頒綘鐨勯」鐩枃浠跺す涓嬶紝鎶妉ibjpeg.lib娣誨姞鍒頒綘鐨勯」鐩腑錛岀劧鍚庡湪浣犲畬鎴愬帇緙╁姛鑳界殑閭d釜鏂囦歡閲屽姞鍏?include "jpeglib.h"錛岄渶瑕佹敞鎰忕殑鏄紝libjpeg.lib鏄敤c璇█寮鍙戠殑錛屽鏋滆鐢ㄥ湪浣犵殑C++紼嬪簭閲岋紝闇瑕佺敤鍒癳xtern "C"錛屽涓嬶細 // TestLibjpeg.cpp : Defines the entry point for the console application. #include "stdafx.h" 銆銆浜屻佸帇緙╂楠?/p>
銆銆錛戙佺敵璇峰茍鍒濆鍖杍peg鍘嬬緝瀵硅薄錛屽悓鏃惰鎸囧畾閿欒澶勭悊鍣?/p>
struct jpeg_compress_struct jcs; // 澹版槑閿欒澶勭悊鍣紝騫惰祴鍊肩粰jcs.err鍩?br> struct jpeg_error_mgr jem; jpeg_create_compress(&jcs); 銆銆錛掋佹寚瀹氬帇緙╁悗鐨勫浘鍍忔墍瀛樻斁鐨勭洰鏍囨枃浠訛紝娉ㄦ剰錛岀洰鏍囨枃浠跺簲浠ヤ簩榪涘埗妯″紡鎵撳紑 f=fopen("03.jpg","wb"); 銆銆錛撱佽緗帇緙╁弬鏁幫紝涓昏鍙傛暟鏈夊浘鍍忓銆侀珮銆佽壊褰╅氶亾鏁幫紙錛戯細绱㈠紩鍥懼儚錛岋紦錛氬叾浠栵級錛岃壊褰╃┖闂達紙JCS_GRAYSCALE琛ㄧず鐏板害鍥撅紝JCS_RGB琛ㄧず褰╄壊鍥懼儚錛夛紝鍘嬬緝璐ㄩ噺絳夛紝濡備笅錛?/p>
jcs.image_width = nWidth; // 涓哄浘鐨勫鍜岄珮錛屽崟浣嶄負鍍忕礌 jpeg_set_defaults(&jcs); 闇瑕佹敞鎰忕殑鏄紝jpeg_set_defaults鍑芥暟涓瀹氳絳夎緗ソ鍥懼儚瀹姐侀珮銆佽壊褰╅氶亾鏁拌鑹插僵絀洪棿鍥涗釜鍙傛暟鍚庢墠鑳借皟鐢紝鍥犱負榪欎釜鍑芥暟瑕佺敤鍒拌繖鍥涗釜鍊鹼紝璋冪敤jpeg_set_defaults鍑芥暟鍚庯紝jpeglib搴撻噰鐢ㄩ粯璁ょ殑璁劇疆瀵瑰浘鍍忚繘琛屽帇緙╋紝濡傛灉闇瑕佹敼鍙樿緗紝濡傚帇緙╄川閲忥紝璋冪敤榪欎釜鍑芥暟鍚庯紝鍙互璋冪敤鍏跺畠璁劇疆鍑芥暟錛屽jpeg_set_quality鍑芥暟銆傚叾瀹炲浘鍍忓帇緙╂椂鏈夊ソ澶氬弬鏁板彲浠ヨ緗紝浣嗗ぇ閮ㄥ垎鎴戜滑閮界敤涓嶇潃璁劇疆錛屽彧闇璋冪敤jpeg_set_defaults鍑芥暟鍊間負榛樿鍊煎嵆鍙?/p>
銆銆錛斻佷笂闈㈢殑宸ヤ綔鍑嗗瀹屾垚鍚庯紝灝卞彲浠ュ帇緙╀簡錛屽帇緙╄繃紼嬮潪甯哥畝鍗曪紝棣栧厛璋冪敤jpeg_start_compress錛岀劧鍚庡彲浠ュ姣忎竴琛岃繘琛屽帇緙╋紝涔熷彲浠ュ鑻ュ共琛岃繘琛屽帇緙╋紝鐢氳嚦鍙互瀵規暣涓殑鍥懼儚榪涜涓嬈″帇緙╋紝鍘嬬緝瀹屾垚鍚庯紝璁板緱瑕佽皟鐢╦peg_finish_compress鍑芥暟錛屽涓嬶細 jpeg_start_compress(&jcs, TRUE); JSAMPROW row_pointer[1]; // 涓琛屼綅鍥?br> int row_stride; // 姣忎竴琛岀殑瀛楄妭鏁? row_stride = jcs.image_width; // 濡傛灉涓嶆槸绱㈠紩鍥?姝ゅ闇瑕佷箻浠? // 瀵規瘡涓琛岃繘琛屽帇緙?br> while (jcs.next_scanline < jcs.image_height) { jpeg_finish_compress(&jcs); 銆銆錛曘佹渶鍚庡氨鏄噴鏀懼帇緙╁伐浣滆繃紼嬩腑鎵鐢寵鐨勮祫婧愪簡錛屼富瑕佸氨鏄痡peg鍘嬬緝瀵硅薄錛岀敱浜庡湪鏈緥涓垜鏄洿鎺ョ敤鐨勫眬閮ㄥ彉閲忥紝鎵浠ュ彧闇璋冪敤jpeg_destroy_compress榪欎釜鍑芥暟鍗沖彲錛屽涓嬶細 jpeg_destroy_compress(&jcs); 銆銆涓夈佽В鍘嬬緝姝ラ cinfo.err = jpeg_std_error(&jerr); JSAMPROW row_pointer[1]; fclose(f); 銆銆濂戒簡錛屽埄鐢↖JG JPEG Library榪涜鍥懼儚鍘嬬緝灝變粙緇嶅埌榪欓噷錛屽笇鏈涘澶у鏈夋墍甯姪錛屽疄渚嬩唬鐮佸凡緇忓疄鐜頒簡鍥懼儚鐨勫帇緙╁拰瑙e帇緙╃殑鍏ㄩ儴鍔熻兘 鐢↖ndependent JPEG Group鍙戣鐨凧pegLib榪涜Jpeg鍥懼儚鐨勮鍙栦笌淇濆瓨銆?br> 榪欓噷鍙姞浜嗕竴涓畝鍗曠殑澶勭悊紺轟緥鈥斺旇礋鐗囥傚叾浠栫殑澶勭悊鍙互鐢ㄤ笌榪欎釜綾諱技鐨勬柟娉曪紝鏈変簡澶勭悊鐨勭畻娉曞鍍忕礌鏁版嵁榪涜鎿嶄綔銆傛垨鑰呭姞涓婇紶鏍囦簨浠剁殑澶勭悊鏉ュ畬鎴愮粯鐢誨姛鑳界瓑絳夛紝榪欓噷涓昏鏄JPEG鏂囦歡榪涜鎿嶄綔鐨勯儴鍒嗐?br> 娉ㄦ剰錛氱▼搴忎腑鐨凜TScreenBuffer騫舵湭浣跨敤錛屽師鍥犳槸浣跨敤瀹冨姞杞藉悗鏈夋鍐呭瓨娌℃湁閲婃斁錛屽姞涓夿MP鏁版嵁鏈潵灝辨瘮杈冨ソ澶勭悊錛屾墍浠ヨ嚜宸卞啓涓孌碉紝灝咮MP鏁版嵁鍔犱笂澶翠俊鎭氨鍙互CreateDIBSection浜嗐?br> 淇濆瓨鐨勯粯璁よ川閲廞=85錛屽ぇ瀹跺湪浣跨敤鏃跺彲浠ユ寜鐓ц姹傛敼鍙樸?/p>
MacintoshM 2006-05-14, 11:38 1.闂鐨勭敱鏉?br> Jpeg鍥劇墖鍦ㄥ浘鍍忓鐞嗛鍩熷凡緇忕敤鐨勭浉褰撳箍娉涗簡銆備絾鍦ㄧ紪紼嬮鍩燂紝灝ゅ叾鏄祵鍏ュ紡緙栫▼棰嗗煙浣跨敤鐨勮繕涓嶆槸寰堝箍銆備富瑕佺殑鍘熷洜鏄疛peg鐨勬暟鎹粨鏋勫拰綆楁硶榪滆緝bmp澶嶆潅錛岄潪鍥懼儚綆楁硶鐨勪笓涓氫漢澹紝閫氬父鏄棤娉曠悊瑙h繖浜涚殑銆傦紙鎴戞湁涓悓浜嬶紝浠栨浘緇忚姳浜嗗崐涓湀錛岀爺絀惰繃Jpeg鐨勫師鐞嗭紝榪樹負姝ゅ湪team鍐呴儴涓懼姙浜嗕竴涓搴э紝璁蹭簡瓚寵凍鏈変竴涓皬鏃訛紝浠や紬浜哄涔嬩話鎱曚竾鍒嗭紝浣嗕粬鍗磋錛屼粎寰楃毊姣涳紝鏈緱瑕佸銆備粠姝ゆ垜瀵笿peg鐨勫師鐞嗚繎鑰岃繙涔嬨傦級
m_staticTest.GetWindowRect(&rect);
HBITMAP hBmp = (HBITMAP)::LoadImage(0, _T("D:\\test.bmp"), IMAGE_BITMAP, rect.Width(), rect.Height(), LR_LOADFROMFILE);
DeleteObject(hBmp);
]]>
BMP鏂囦歡鐢辨枃浠跺ご銆佷綅鍥句俊鎭ご銆侀鑹蹭俊鎭拰鍥懼艦鏁版嵁鍥涢儴鍒嗙粍鎴愩?br>2錛?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">BMP鏂囦歡澶?14瀛楄妭)
BMP鏂囦歡澶存暟鎹?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">緇撴瀯鍚湁BMP鏂囦歡鐨勭被鍨嬨佹枃浠跺ぇ灝忓拰浣嶅浘璧峰浣嶇疆絳変俊鎭?br>鍏?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">緇撴瀯瀹氫箟濡備笅:
typedef struct tagBITMAPFILEHEADER
{
WORDbf Type; // 浣嶅浘鏂囦歡鐨勭被鍨嬶紝蹇呴』涓?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">BMP(0-1瀛楄妭)
DWORD bfSize; // 浣嶅浘鏂囦歡鐨勫ぇ灝忥紝浠ュ瓧鑺備負鍗曚綅(2-5瀛楄妭)
WORD bfReserved1; // 浣嶅浘鏂囦歡淇濈暀瀛楋紝蹇呴』涓?(6-7瀛楄妭)
WORD bfReserved2; // 浣嶅浘鏂囦歡淇濈暀瀛楋紝蹇呴』涓?(8-9瀛楄妭)
DWORD bfOffBits; // 浣嶅浘鏁版嵁鐨勮搗濮嬩綅緗紝浠ョ浉瀵逛簬浣嶅浘(10-13瀛楄妭)
// 鏂囦歡澶寸殑鍋忕Щ閲忚〃紺猴紝浠ュ瓧鑺備負鍗曚綅
} BITMAPFILEHEADER;
3錛氫綅鍥句俊鎭ご(40瀛楄妭)
BMP浣嶅浘淇℃伅澶存暟鎹敤浜庤鏄庝綅鍥劇殑灝哄絳変俊鎭?br>typedef struct tagBITMAPINFOHEADER{
DWORD biSize; // 鏈?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">緇撴瀯鎵鍗犵敤瀛楄妭鏁?14-17瀛楄妭)
LONG biWidth; // 浣嶅浘鐨勫搴︼紝浠ュ儚绱犱負鍗曚綅(18-21瀛楄妭)
LONG biHeight; // 浣嶅浘鐨勯珮搴︼紝浠ュ儚绱犱負鍗曚綅(22-25瀛楄妭)
WORD biPlanes; // 鐩爣璁懼鐨勭駭鍒紝蹇呴』涓?(26-27瀛楄妭)
WORD biBitCount;// 姣忎釜鍍忕礌鎵闇鐨勪綅鏁幫紝蹇呴』鏄?(鍙岃壊),(28-29瀛楄妭)
// 4(16鑹?錛?(256鑹?鎴?4(鐪熷僵鑹?涔嬩竴
DWORD biCompression; // 浣嶅浘鍘嬬緝綾誨瀷錛屽繀欏繪槸 0(涓嶅帇緙?,(30-33瀛楄妭)
// 1(BI_RLE8鍘嬬緝綾誨瀷)鎴?(BI_RLE4鍘嬬緝綾誨瀷)涔嬩竴
DWORD biSizeImage; // 浣嶅浘鐨勫ぇ灝忥紝浠ュ瓧鑺備負鍗曚綅(34-37瀛楄妭)
LONG biXPelsPerMeter; // 浣嶅浘姘村鉤鍒嗚鯨鐜囷紝姣忕背鍍忕礌鏁?38-41瀛楄妭)
LONG biYPelsPerMeter; // 浣嶅浘鍨傜洿鍒嗚鯨鐜囷紝姣忕背鍍忕礌鏁?42-45瀛楄妭)
DWORD biClrUsed;// 浣嶅浘瀹為檯浣跨敤鐨勯鑹茶〃涓殑棰滆壊鏁?46-49瀛楄妭)
DWORD biClrImportant;// 浣嶅浘鏄劇ず榪囩▼涓噸瑕佺殑棰滆壊鏁?50-53瀛楄妭)
} BITMAPINFOHEADER;
4錛氶鑹茶〃
棰滆壊琛ㄧ敤浜庤鏄庝綅鍥句腑鐨勯鑹詫紝瀹冩湁鑻ュ共涓〃欏癸紝姣忎竴涓〃欏規槸涓涓猂GBQUAD綾誨瀷鐨?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">緇撴瀯錛屽畾涔変竴縐嶉鑹層俁GBQUAD緇撴瀯鐨勫畾涔夊涓?
typedef struct tagRGBQUAD {
BYTE rgbBlue;// 钃濊壊鐨勪寒搴?鍊艱寖鍥翠負0-255)
BYTE rgbGreen; // 緇胯壊鐨勪寒搴?鍊艱寖鍥翠負0-255)
BYTE rgbRed; // 綰㈣壊鐨勪寒搴?鍊艱寖鍥翠負0-255)
BYTE rgbReserved;// 淇濈暀錛屽繀欏諱負0
} RGBQUAD;
棰滆壊琛ㄤ腑RGBQUAD緇撴瀯鏁版嵁鐨勪釜鏁版湁biBitCount鏉ョ‘瀹?
褰揵iBitCount=1,4,8鏃訛紝鍒嗗埆鏈?,16,256涓〃欏?
褰揵iBitCount=24鏃訛紝娌℃湁棰滆壊琛ㄩ」銆?br>浣嶅浘淇℃伅澶村拰棰滆壊琛ㄧ粍鎴愪綅鍥句俊鎭紝BITMAPINFO緇撴瀯瀹氫箟濡備笅:
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader; // 浣嶅浘淇℃伅澶?br>RGBQUAD bmiColors[1]; // 棰滆壊琛?br>} BITMAPINFO;
5錛氫綅鍥炬暟鎹?br>浣嶅浘鏁版嵁璁板綍浜嗕綅鍥劇殑姣忎竴涓儚绱犲鹼紝璁板綍欏哄簭鏄湪鎵弿琛屽唴鏄粠宸﹀埌鍙?鎵弿琛屼箣闂存槸浠庝笅鍒頒笂銆備綅鍥劇殑涓涓儚绱犲兼墍鍗犵殑瀛楄妭鏁?
褰揵iBitCount=1鏃訛紝8涓儚绱犲崰1涓瓧鑺?
褰揵iBitCount=4鏃訛紝2涓儚绱犲崰1涓瓧鑺?
褰揵iBitCount=8鏃訛紝1涓儚绱犲崰1涓瓧鑺?
褰揵iBitCount=24鏃?1涓儚绱犲崰3涓瓧鑺?
Windows瑙勫畾涓涓壂鎻忚鎵鍗犵殑瀛楄妭鏁板繀欏繪槸
4鐨勫嶆暟(鍗充互long涓哄崟浣?,涓嶈凍鐨勪互0濉厖錛?br>biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8) * bi.biHeight;
鍏蜂綋鏁版嵁涓句緥錛?br>濡傛煇BMP鏂囦歡寮澶達細
4D42 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... ....
BMP鏂囦歡鍙垎涓哄洓涓儴鍒嗭細浣嶅浘鏂囦歡澶淬佷綅鍥句俊鎭ご銆佸僵鑹叉澘銆佸浘鍍忔暟鎹樀鍒楋紝鍦ㄤ笂鍥句腑宸茬敤*鍒嗛殧銆?br>涓銆佸浘鍍忔枃浠跺ご
1錛?錛?榪欓噷鐨勬暟瀛椾唬琛ㄧ殑鏄?瀛?,鍗充袱涓瓧鑺?涓嬪悓)鍥懼儚鏂囦歡澶淬?x4D42=’BM’錛岃〃紺烘槸Windows鏀寔鐨?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">BMP鏍煎紡銆?br>2錛?-3錛氭暣涓枃浠跺ぇ灝忋?690 0000錛屼負00009046h=36934銆?br>3錛?-5錛氫繚鐣欙紝蹇呴』璁劇疆涓?銆?br>4錛?-7錛氫粠鏂囦歡寮濮嬪埌浣嶅浘鏁版嵁涔嬮棿鐨勫亸縐婚噺銆?600 0000錛屼負00000046h=70錛屼笂闈㈢殑鏂囦歡澶村氨鏄?5瀛?70瀛楄妭銆?br>浜屻佷綅鍥句俊鎭ご
5錛?-9錛氫綅鍥懼浘淇℃伅澶撮暱搴︺?br>6錛?0-11錛氫綅鍥懼搴︼紝浠ュ儚绱犱負鍗曚綅銆?000 0000錛屼負00000080h=128銆?br>7錛?2-13錛氫綅鍥鵑珮搴︼紝浠ュ儚绱犱負鍗曚綅銆?000 0000錛屼負00000090h=144銆?br>8錛?4錛氫綅鍥劇殑浣嶉潰鏁幫紝璇ュ兼繪槸1銆?100錛屼負0001h=1銆?br>9錛?5錛氭瘡涓儚绱犵殑浣嶆暟銆傛湁1錛堝崟鑹詫級錛?錛?6鑹詫級錛?錛?56鑹詫級錛?6錛?4K鑹詫紝楂樺僵鑹詫級錛?4錛?6M鑹詫紝鐪熷僵鑹詫級錛?2錛?096M鑹詫紝澧炲己鍨嬬湡褰╄壊錛夈?000涓?010h=16銆?br>10錛?6-17錛氬帇緙╄鏄庯細鏈?錛堜笉鍘嬬緝錛夛紝1錛圧LE 8錛?浣峈LE鍘嬬緝錛夛紝2錛圧LE 4錛?浣峈LE鍘嬬緝錛?錛圔itfields錛屼綅鍩熷瓨鏀撅級銆俁LE綆鍗曞湴璇存槸閲囩敤鍍忕礌鏁?鍍忕礌鍊肩殑鏂瑰紡榪涜鍘嬬緝銆俆408閲囩敤鐨勬槸浣嶅煙瀛樻斁鏂瑰紡錛岀敤涓や釜瀛楄妭琛ㄧず涓涓儚绱狅紝浣嶅煙鍒嗛厤涓簉5b6g5銆傚浘涓?300 0000涓?0000003h=3銆?br>11錛?8-19錛氱敤瀛楄妭鏁拌〃紺虹殑浣嶅浘鏁版嵁鐨勫ぇ灝忥紝璇ユ暟蹇呴』鏄?鐨勫嶆暟錛屾暟鍊間笂絳変簬錛?#8805;浣嶅浘瀹藉害鐨勬渶灝忕殑4鐨勫嶆暟錛?#215;浣嶅浘楂樺害×姣忎釜鍍忕礌浣嶆暟銆?090 0000涓?0009000h=80×90×2h=36864銆?br>12錛?0-21錛氱敤璞$礌/綾寵〃紺虹殑姘村鉤鍒嗚鯨鐜囥侫00F 0000涓?000 0FA0h=4000銆?br>13錛?2-23錛氱敤璞$礌/綾寵〃紺虹殑鍨傜洿鍒嗚鯨鐜囥侫00F 0000涓?000 0FA0h=4000銆?br>14錛?4-25錛氫綅鍥句嬌鐢ㄧ殑棰滆壊绱㈠紩鏁般傝涓?鐨勮瘽錛屽垯璇存槑浣跨敤鎵鏈夎皟鑹叉澘欏廣?br>15錛?6-27錛氬鍥捐薄鏄劇ず鏈夐噸瑕佸獎鍝嶇殑棰滆壊绱㈠紩鐨勬暟鐩傚鏋滄槸0錛岃〃紺洪兘閲嶈銆?br>涓夈佸僵鑹叉澘
16錛?8-....(涓嶇‘瀹?錛氬僵鑹叉澘瑙勮寖銆傚浜庤皟鑹叉澘涓殑姣忎釜琛ㄩ」錛岀敤涓嬭堪鏂規硶鏉ユ弿榪癛GB鐨勫鹼細
1瀛楄妭鐢ㄤ簬钃濊壊鍒嗛噺
1瀛楄妭鐢ㄤ簬緇胯壊鍒嗛噺
1瀛楄妭鐢ㄤ簬綰㈣壊鍒嗛噺
1瀛楄妭鐢ㄤ簬濉厖絎?璁劇疆涓?)
瀵逛簬24-浣嶇湡褰╄壊鍥懼儚灝變笉浣跨敤褰╄壊鏉匡紝鍥犱負浣嶅浘涓殑RGB鍊煎氨浠h〃浜嗘瘡涓薄绱犵殑棰滆壊銆?br>濡傦紝褰╄壊鏉夸負00F8 0000 E007 0000 1F00 0000 0000 0000錛屽叾涓細
00FB 0000涓篎B00h=1111100000000000錛堜簩榪涘埗錛夛紝鏄摑鑹插垎閲忕殑鎺╃爜銆?br>E007 0000涓?07E0h=0000011111100000錛堜簩榪涘埗錛夛紝鏄豢鑹插垎閲忕殑鎺╃爜銆?br>1F00 0000涓?01Fh=0000000000011111錛堜簩榪涘埗錛夛紝鏄孩鑹插垎閲忕殑鎺╃爜銆?br>0000 0000鎬昏緗負0銆?br>灝嗘帺鐮佽窡鍍忕礌鍊艱繘琛?#8220;涓?#8221;榪愮畻鍐嶈繘琛岀Щ浣嶆搷浣滃氨鍙互寰楀埌鍚勮壊鍒嗛噺鍊箋傜湅鐪嬫帺鐮侊紝灝卞彲浠ユ槑鐧戒簨瀹炰笂鍦ㄦ瘡涓儚绱犲肩殑涓や釜瀛楄妭16浣嶄腑錛屾寜浠庨珮鍒頒綆鍙?銆?銆?浣嶅垎鍒氨鏄痳銆乬銆乥鍒嗛噺鍊箋傚彇鍑哄垎閲忓煎悗鎶妑銆乬銆乥鍊煎垎鍒箻浠?銆?銆?灝卞彲浠ヨˉ榻愮涓垎閲忎負涓涓瓧鑺傦紝鍐嶆妸榪欎笁涓瓧鑺傛寜rgb緇勫悎錛屾斁鍏ュ瓨鍌ㄥ櫒錛堝悓鏍瘋鍙嶅簭錛夛紝灝卞彲浠ヨ漿鎹負24浣嶆爣鍑?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">BMP鏍煎紡浜嗐?br>鍥涖佸浘鍍忔暟鎹樀鍒?br>17)27(鏃犺皟鑹叉澘)-錛庯紟錛庯細姣忎袱涓瓧鑺傝〃紺轟竴涓儚绱犮傞樀鍒椾腑鐨勭涓涓瓧鑺傝〃紺轟綅鍥懼乏涓嬭鐨勮薄绱狅紝鑰屾渶鍚庝竴涓瓧鑺傝〃紺轟綅鍥懼彸涓婅鐨勮薄绱犮?br>浜斻佸瓨鍌ㄧ畻娉?br>BMP鏂囦歡閫氬父鏄笉鍘嬬緝鐨勶紝鎵浠ュ畠浠氬父姣斿悓涓騫呭浘鍍忕殑鍘嬬緝鍥懼儚鏂囦歡鏍煎紡瑕佸ぇ寰堝銆備緥濡傦紝涓涓?00×600鐨?4浣嶅嚑涔庡崰鎹?.4MB絀洪棿銆傚洜姝ゅ畠浠氬父涓嶉傚悎鍦ㄥ洜鐗圭綉鎴栬呭叾瀹冧綆閫熸垨鑰呮湁瀹歸噺闄愬埗鐨勫獟浠嬩笂榪涜浼犺緭銆傛牴鎹鑹叉繁搴︾殑涓嶅悓錛屽浘鍍忎笂鐨勪竴涓儚绱犲彲浠ョ敤涓涓垨鑰呭涓瓧鑺傝〃紺猴紝瀹冪敱n/8鎵紜畾錛坣鏄綅娣卞害錛?瀛楄妭鍖呭惈8涓暟鎹綅錛夈傚浘鐗囨祻瑙堝櫒絳夊熀浜庡瓧鑺傜殑ASCII鍊艱綆楀儚绱犵殑棰滆壊錛岀劧鍚庝粠璋冭壊鏉夸腑璇誨嚭鐩稿簲鐨勫箋傛洿涓鴻緇嗙殑淇℃伅璇峰弬闃呬笅闈㈠叧浜庝綅鍥炬枃浠剁殑閮ㄥ垎銆?n浣?n縐嶉鑹茬殑浣嶅浘榪戜技瀛楄妭鏁板彲浠ョ敤涓嬮潰鐨勫叕寮忚綆楋細 BMP鏂囦歡澶у皬綰︾瓑浜?54+4*2鐨刵嬈℃柟+錛坵*h*n)/8
錛屽叾涓珮搴﹀拰瀹藉害閮芥槸鍍忕礌鏁般傞渶瑕佹敞鎰忕殑鏄笂闈㈠叕寮忎腑鐨?4鏄綅鍥炬枃浠剁殑鏂囦歡澶達紝鏄僵鑹茶皟鑹叉澘鐨勫ぇ灝忋傚彟澶栭渶瑕佹敞鎰忕殑鏄繖鏄竴涓繎浼煎鹼紝瀵逛簬n浣嶇殑浣嶅浘鍥懼儚鏉ヨ錛屽敖綆″彲鑳芥湁鏈澶?n涓鑹詫紝涓涓壒瀹氱殑鍥懼儚鍙兘騫朵笉浼氫嬌鐢ㄨ繖浜涙墍鏈夌殑棰滆壊銆傜敱浜庡僵鑹茶皟鑹叉澘浠呬粎瀹氫箟浜嗗浘鍍忔墍鐢ㄧ殑棰滆壊錛屾墍浠ュ疄闄呯殑褰╄壊璋冭壊鏉垮皢灝忎簬銆傚鏋滄兂鐭ラ亾榪欎簺鍊兼槸濡備綍寰楀埌鐨勶紝璇峰弬鑰冧笅闈㈡枃浠舵牸寮忕殑閮ㄥ垎銆傜敱浜庡瓨鍌ㄧ畻娉曟湰韜喅瀹氱殑鍥犵礌錛屾牴鎹嚑涓浘鍍忓弬鏁扮殑涓嶅悓璁$畻鍑虹殑澶у皬涓庡疄闄呯殑鏂囦歡澶у皬灝嗕細鏈変竴浜涚粏灝忕殑宸埆銆?
]]>
//
#include "memory.h"
extern "C" {
#include "jpeglib.h"
}
jcs.err = jpeg_std_error(&jem);
if (f==NULL)
{
delete [] data;
delete [] pDataConv;
return 0;
}
jpeg_stdio_dest(&jcs, f);
jcs.image_height = nHeight;
jcs.input_components = 1; // 鍦ㄦ涓?,琛ㄧず鐏板害鍥撅紝 濡傛灉鏄僵鑹蹭綅鍥撅紝鍒欎負3
jcs.in_color_space = JCS_GRAYSCALE; //JCS_GRAYSCALE琛ㄧず鐏板害鍥撅紝JCS_RGB琛ㄧず褰╄壊鍥懼儚
jpeg_set_quality (&jcs, 80, true);
row_pointer[0] = & pDataConv[jcs.next_scanline * row_stride];
jpeg_write_scanlines(&jcs, row_pointer, 1);
}
銆銆瑙e帇緙╂楠や笌鍘嬬緝姝ラ闈炲父鐩鎬技錛屽彧鏄В鍘嬬緝瀵硅薄涓簀peg_decompress_struct綾誨瀷錛屾楠ゅ涓嬶細
銆銆1銆佸0鏄庡茍鍒濆鍖栬В鍘嬬緝瀵硅薄錛屽悓鏃跺埗瀹氶敊璇俊鎭鐞嗗櫒
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr 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銆佽鍙栧浘鍍忎俊鎭?br> jpeg_read_header(&cinfo, TRUE);
銆銆4銆佹牴鎹浘鍍忎俊鎭敵璇蜂竴涓浘鍍忕紦鍐插尯
data = new BYTE cinfo.image_width*cinfo.image_height*cinfo.num_components];
銆銆5銆佸紑濮嬭В鍘嬬緝
jpeg_start_decompress(&cinfo);
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銆侀噴鏀捐祫婧?br> jpeg_destroy_decompress(&cinfo);Embedded VC
Jpeg鍥懼儚澶勭悊紼嬪簭鍜屼唬鐮?浣跨敤Indepedent JPEG Group鐨凧pegLib)
璇︾粏鐨勪嬌鐢ㄦ柟娉曚互鍙奐pegLib搴?/h3>
璇︾粏鐨勪嬌鐢ㄦ柟娉曪細
1.緋葷粺闇姹?br> Microsoft eMbedded Visual C++ 4.0 + Pocket PC 2003 SDK
Pocket PC鐨凧pegLib搴?鍦ㄦ湰甯栫殑闄勪歡涓?
2.鑳屾櫙
Jpeg搴撶殑鐢變互涓嬩袱涓枃浠墮厤緗?jconfig.h鍜宩morecfg.h銆備竴鑸嬌鐢ㄦ椂鏄笉闇瑕佹敼鍙榡morecfg.h鐨勶紝浣嗚繖鏍峰彲鑳藉湪Pocket PC涓繍琛屾椂閬囧埌闂錛屾墍浠ヨ繖閲岃繕鏄jmorecfg.h榪涜浜嗕慨鏀廣備笅闈㈠皢璁ㄨ榪欎釜淇敼錛屼互浣胯繖涓簱鍦≒ocket PC涓婃甯鎬嬌鐢ㄣ備笉榪囪繖閲岃兘澶熶笅杞界殑闄勪歡宸茬粡鍋氬ソ浜嗚繖涓慨鏀廣?br>
3.灝咼pegLib寮曞叆Pocket PC
jmorecfg.h鏂囦歡鍚湁涓嶦mbedded Visual Studio鍐茬獊鐨勫畾涔?闇瑕佸仛浠ヤ笅淇敼:
(1)浠g爜:
#ifndef XMD_H
typedef long INT32;
#endif
鏀逛負:
#if !defined(XMD_H) && !defined(_BASETSD_H_)
typedef long INT32;
#endif
(2)浠g爜:
#ifdef NEED_FAR_POINTERS
#define FAR far
#else
#define FAR
#endif
鐢ㄤ笅闈㈢殑ifdef浠f浛
#ifndef FAR
....
#endif
4.浣跨敤JpegLib鍔犺澆Jpeg鍥劇墖
鍦ㄥ墠闈㈢殑闄勪歡鐨勭▼搴忎腑錛屽凡緇忔湁榪欎釜紼嬪簭鐨勬鏋訛紝榪欓噷涓嶅啀璧樿堪銆傚彧璁蹭富瑕佺殑閮ㄥ垎銆?br> (1)鍔犺澆Jpeg鍥劇墖鐨勫嚱鏁幫細
void CImageView::LoadImage(const CString &strFileName)
{
FILE * pFile;
struct jpeg_error_mgr jerr;
struct jpeg_decompress_struct cinfo;
int i,start;
start=0;
if ((pFile = _tfopen(strFileName, _T("rb"
)) == NULL) {
CString strError;
strError.Format(_T("鏃犳硶鎵撳紑鏂囦歡 '%s'"
, strFileName);
AfxMessageBox(strError);
}
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo, pFile);
jpeg_read_header(&cinfo, TRUE);
jpeg_start_decompress(&cinfo);
nRowSize = cinfo.output_width * cinfo.output_components;
Width=cinfo.output_width;
Height=cinfo.output_height;
if(bmpLoaded)
{
delete bmpBuffer;
}
bmpBuffer=new BYTE[(Height+1)*Width*3]; //榪欓噷澶氱敵璇蜂竴琛岋紝鏄洜涓哄湪妯℃嫙鍣ㄦ墽琛屾椂錛屼細鍑虹幇鏃犳硶鍔犺澆鐨勯敊璇紝浣嗗湪鏈哄櫒涓婃甯?br>
bmpLoaded=TRUE;
pBuffer = (*cinfo.mem->alloc_sarray)
((j_common_ptr) &cinfo, JPOOL_IMAGE, nRowSize, 1);
while(cinfo.output_scanline < cinfo.output_height)
{
jpeg_read_scanlines(&cinfo, pBuffer, 1);
start=nRowSize*cinfo.output_scanline;
for(i=0;i<nRowSize;i++)
{
bmpBuffer[start+i]=pBuffer[0]
;
}
}
CreateBitmap();
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
fclose(pFile);
}
(2)灝嗗姞杞藉悗鐨勫儚绱犳暟鎹緩绔嬩竴涓狧BITMAP瀵硅薄鐨勫嚱鏁?br> 娉ㄦ剰榪欓噷娌℃湁浣跨敤CSTScreenBuffer,鍥犱負鍦ㄦ垜瀹為獙鏃訛紝鐢ㄨ繖涓嚱鏁板姞杞藉悗錛屽唴瀛樿祫婧愭病鏈夐噴鏀撅紝榪欐牱姣忓姞杞戒竴騫呭浘鎴栧仛涓嬈″鐞嗭紝灝變細澶氭秷鑰楀嚑鍏嗗唴瀛?Pocket PC鍐呭瓨寰堝揩灝變細琚楀敖銆傛墍浠ヨ繖閲屽皢鍍忕礌鏁版嵁鍔犱笂澶翠俊鎭氨鍙互CreateDIBSection浜嗐?br> void CImageView::CreateBitmap()
{
int m_nCorrectedWidth,m_nWidth,m_nHeight;
m_nCorrectedWidth = ( ( Width + 3 ) / 4 ) * 4;
m_nWidth = Width;
m_nHeight = Height;
DIBINFO dibInfo;
BGRColor *m_pBuffer;
dibInfo.bmiHeader.biBitCount = 24;
dibInfo.bmiHeader.biClrImportant = 0;
dibInfo.bmiHeader.biClrUsed = 0;
dibInfo.bmiHeader.biCompression = 0;
dibInfo.bmiHeader.biHeight = m_nHeight;
dibInfo.bmiHeader.biPlanes = 1;
dibInfo.bmiHeader.biSize = 40;
dibInfo.bmiHeader.biSizeImage = m_nCorrectedWidth*m_nHeight*3;
dibInfo.bmiHeader.biWidth = m_nCorrectedWidth;
dibInfo.bmiHeader.biXPelsPerMeter = 3780;
dibInfo.bmiHeader.biYPelsPerMeter = 3780;
dibInfo.bmiColors[0].rgbBlue = 0;
dibInfo.bmiColors[0].rgbGreen = 0;
dibInfo.bmiColors[0].rgbRed = 0;
dibInfo.bmiColors[0].rgbReserved = 0;
HDC hDC = ::GetDC(NULL);
if(m_hBitmap)
{
:
eleteObject(m_hBitmap);
m_hBitmap=0;
}
m_hBitmap = CreateDIBSection(hDC, (const BITMAPINFO*)dibInfo, DIB_RGB_COLORS, (void**)&m_pBuffer, NULL, 0);
::ReleaseDC(NULL,hDC);
int nPosition = 0;
int nDataPosition = 0;
for (int y=0; y<Height; y++) {
nPosition = m_nCorrectedWidth*(m_nHeight-y-1);
nDataPosition = Width*3*y;
for (int x=0; x<Width; x++) {
m_pBuffer[nPosition].m_R = bmpBuffer[nDataPosition++];
m_pBuffer[nPosition].m_G = bmpBuffer[nDataPosition++];
m_pBuffer[nPosition].m_B = bmpBuffer[nDataPosition++];
nPosition++;
}
}
}
(3)鍦ㄧ粯鐢誨嚱鏁頒腑錛岃繖閲屾槸OnDraw()錛屽姞鍏ュ涓嬩唬鐮侊細
if (m_hBitmap)
{
CDC memDc;
VERIFY(memDc.CreateCompatibleDC(&dc));
HBITMAP hOldBitmap = (HBITMAP)::SelectObject(memDc.GetSafeHdc(), m_hBitmap);
VERIFY(dc.BitBlt(-LeftTop.x, -LeftTop.y, Width, Height, &memDc, 0, 0, SRCCOPY));
::SelectObject(memDc.GetSafeHdc(), hOldBitmap);
VERIFY( memDc.DeleteDC() );
}
5.浣跨敤JpegLib搴撲繚瀛楯peg鍥劇墖
榪欓噷鏄竴縐嶅疄鐜版柟娉曪細
void CImageView::SaveImage(const CString &strFileName)
{
int nQuality=85; //淇濆瓨璐ㄩ噺Q鍊間負85
if(!::WriteRGBBytesIntoJpegFile(strFileName,Width,Height,nQuality,bmpBuffer))
{
::AfxMessageBox(GetJpegWriterError());
}
}
鍏朵粬鐨勬洿璇︾粏鍐呭鐨勭湅渚嬬▼涓殑鍏朵粬娑堟伅澶勭悊鍑芥暟灝卞彲浠ヤ簡銆?/span>
榪戞潵錛屽洜宸ヤ綔闇瑕侊紝瑕佸湪wince騫沖彴涓嬶紝涓虹▼搴忔坊鍔燡peg鏀寔銆備竴鑸潵璇達紝姝ょ被闂鏈瀹規槗鐨勮В鍐蟲柟妗堟槸浣跨敤OS鎻愪緵鐨勭浉鍏沖簱錛屾瘯绔熺幇鍦ㄤ笉鏀寔Jpeg鐨凮S鍑犱箮娌℃湁銆備絾鍦╳ince涓嬭繖閲屽嚭浜嗕釜闂銆傜洰鍓嶇粷澶у鏁扮殑wince璁懼鏄痺ince 4.X鎴?.X鐨勶紝涓嶈繃紕板閥鍦ㄥ浘鍍忓鐞嗚繖鍧楋紝5.X鍜?.X鐨勬柟娉曟槸涓嶄竴鏍風殑銆?.X鎻愪緵鐨勬柟娉曞湪IMGDECMP.DLL涓紝鑰?.X鎻愪緵鐨勬柟娉曞湪Imaging.DLL涓紝鑰屼笖涓嶆鏄摼鎺ュ簱涓嶅悓錛屽簱鐨勬帴鍙d篃鏄畬鍏ㄤ袱鏍風殑銆傚洜姝わ紝濡傛灉杞歡閲囩敤OS鎻愪緵鐨勭浉鍏沖簱鐨勮瘽錛屽湪榪欓噷灝辮鍑嗗涓ゅ鎺ュ彛錛岄潪甯哥殑楹葷儲銆傚喌涓旓紝鎴戜滑鐨勮蔣浠朵笉浠呰鍦╳ince涓嬮儴緗詫紝灝嗘潵榪樻墦綆楁帹騫垮埌鍏朵粬鐨勫鉤鍙幫紝鍥犳榪欑鏂規鏄劇劧鏄笉澶ソ鐨勩?br> 榪欐椂鎴戞兂鍒頒簡JpegLib銆侸pegLib鏄疘ndependent JPEG Group鈥斺斾竴涓潪Jpeg瀹樻柟緇勭粐鎺ㄥ嚭鐨凧peg搴撱傝繖鏄釜寮婧愬厤璐圭殑搴擄紝鏀寔澶氱騫沖彴鍜岀紪璇戝櫒錛屼綘鍙互鍦?a target=_blank>www.ijg.org涓幏寰楀畠鐨勬渶鏂扮増鏈傚湪PC涓婂畠鐨勬晥鐜囨瘮涓嶄簡intel鐨凧peg搴擄紝鍥犱負鍚庤呰繘琛屼簡姹囩紪浼樺寲銆備絾鍦╳ince涓婂簲璇ュ拰緋葷粺搴撶殑鏁堢巼鐩稿綋銆備簨瀹炰笂濡傛灉鏌ョ湅緋葷粺鐨勭増鏉冧俊鎭殑璇濓紝Microsoft鍦╳ince涓篃浣跨敤浜嗚繖涓簱銆俁ISC鐨勮姱鐗囦篃鍩烘湰娌℃湁姹囩紪浼樺寲鐨勯棶棰樸?br> 緗戜笂鐨勪腑鏂囪祫鏂欎互浠ヤ笅涓ょ瘒鏂囩珷鏈涓鴻灝姐?br> http://mobile.winfans.net/ccs/forums/516/PrintPost.aspx 錛堟枃鐚瓵錛?br> http://blog.csdn.net/zhao3728/archive/2007/08/22/1754877.aspx 錛堟枃鐚瓸錛?br> 鎵浠ユ垜鐨勮繖綃囨枃绔犱富瑕佷綔涓鴻ˉ閬椾箣鐢ㄣ?br>
2.緙栬瘧JpegLib搴?br> 鏂囩尞A鍜孊閮芥槸浣跨敤鐜版垚鐨凧pegLib搴擄紝榪欐牱鐨勫簱鍙湪鐗瑰畾鐨勫鉤鍙頒笅鎵嶈兘鐢紝瀹屽叏浣撶幇涓嶅嚭JpegLib鐨勪紭鍔褲傛墍浠ユ帉鎻$紪璇慗pegLib搴撶殑鏂規硶錛屾槸寰堟湁蹇呰鐨勩?br> JpegLib搴撴簮浠g爜鐨勭粍鎴?br> 1錛塵akefile銆侸pegLib搴撲腑鏈夊緢澶氭枃浠跺悕涓簃akefile鐨勬枃浠躲傚畠鐨勫悗緙鍚嶈〃紺哄畠鎵鐢ㄤ簬鐨勫鉤鍙版垨鐢ㄩ斻傞殢渚挎墦寮涓涓紝灝卞彲浠ョ湅鍒癑pegLib搴撴簮浠g爜鐨勭粍鎴愩?br> 2錛塵akefile涓璍IBSOURCES鍙橀噺鎵浠h〃鐨勬枃浠舵槸JpegLib鐨勬牳蹇冪畻娉曢儴鍒嗐?br> 3錛塵akefile涓璖YSDEPSOURCES鍙橀噺鎵浠h〃鐨勬枃浠舵槸JpegLib涓礋璐e唴瀛樺垎閰嶇殑閮ㄥ垎銆傝繖閮ㄥ垎鏄郴緇熺浉鍏崇殑錛屾墍浠ユ牴鎹渶瑕侀夌敤涓涓氨琛屼簡銆?br> 4錛塵akefile涓瑼PPSOURCES鍙橀噺鎵浠h〃鐨勬枃浠舵槸JpegLib涓彁渚涜濡傚懡浠よ鍘嬬緝Jpeg涔嬬被鐨勫姛鑳界殑閮ㄥ垎錛屽疄闄呬笂灝辨槸涓浜涘皬宸ュ叿銆備笉榪囧湪緙栬瘧JpegLib搴撴椂錛屼笉瑕佸皢涔嬫坊鍔犲埌宸ョ▼涓?br> 5錛塵akefile涓璉NCLUDES鍙橀噺鎵浠h〃鐨勬枃浠舵槸婧愪唬鐮佷腑鐢ㄥ埌鐨勫ご鏂囦歡銆備笉鏄墍鏈夌殑澶存枃浠墮兘琚牳蹇冪畻娉曢儴鍒嗕嬌鐢ㄥ埌錛屽洜姝ゆ湁浜涘ご鏂囦歡鍦ㄧ紪璇慗pegLib搴撴椂錛屾槸涓嶅繀瑕佺殑錛屽綋鐒跺皢涔嬫坊鍔犲埌宸ョ▼涓篃涓嶄細鍑洪敊銆?br> 6錛塵akefile涓璂OCS鍙橀噺鎵浠h〃鐨勬枃浠舵槸涓浜涙枃妗c佹祴璇曠敤渚嬩箣綾葷殑涓滆タ銆傚叾涓渶鏈夌敤鐨勬槸example.c錛屾枃鐚瓵鍜孊鐨勭ず渚嬫渶閲嶈鐨勯儴鍒嗭紝灝辨潵鑷繖閲屻?br> 7錛塲config銆侸pegLib搴撲腑榪樻湁寰堝鍜宮akefile綾諱技鐨刯config錛岃繖鏄拡瀵逛笉鍚屽鉤鍙扮殑綾誨瀷澹版槑銆傚湪浣跨敤鏃訛紝搴旀牴鎹渶瑕侊紝灝嗛傚綋鐨刯config鏂囦歡鐨勫悗緙鍚嶆敼涓篽銆?br> 浠ヤ笂榪欎簺鍐呭鏇磋緇嗙殑璇存槑瑙丣pegLib搴撶殑鏂囨。錛屼互鍙?br> http://blog.csdn.net/axlrosek/archive/2007/03/29/1545496.aspx
VC:涓嶅悓鐗堟湰鐨刅C銆丒VC閮藉樊涓嶅錛屽弬鐓ф枃鐚瓵鐨勬楠や慨鏀圭浉鍏蟲枃浠訛紝鐒跺悗鏂板緩涓涓┖宸ョ▼錛岀劧鍚庢墦寮JpegLib涓殑makefile.vc鏂囦歡,灝?錛夊拰3錛夈?錛夈?錛変腑鐨勬枃浠舵坊鍔犲埌宸ョ▼涓傚皢鐢熸垚鏂囦歡鐨勭被鍨嬪畾涓簂ib灝辮浜嗐傛澶栵紝榪橀渶瑕侀拡瀵硅皟鐢ㄧ殑鎯呭喌閫夋嫨閫傚綋鐨勮繍琛屾椂搴擄紝鍚﹀垯鍙兘浼氬嚭LNK2005閿欒銆?br>
3.浣跨敤JpegLib搴?br> JpegLib搴撶殑浣跨敤鍙傜収鏂囩尞A鍜孊錛屼互鍙奺xample.c灝卞彲浠ヤ簡銆備絾鏂囩尞A鐨勭ず渚嬫槸鏈夐棶棰樼殑銆?br> bmpBuffer[start+i]=pBuffer[0];
搴旀敼涓?br> bmpBuffer[start+i]=pBuffer[0][i];
jpeg_read_scanlines(&cinfo, pBuffer, 1)鎵ц涔嬪悗錛?span style="FONT-WEIGHT: bold">鎵弿綰跨殑鍐呭琚斁鍒皃Buffer[0]錛岃屼笉鏄痯Buffer涓?/span>錛岀敤memcpy灝嗘壂鎻忕嚎鐨勫唴瀹硅漿縐誨埌鍏朵粬鐨勭紦鍐插尯灝辮浜嗭紝鏃犻渶鐢ㄥ驚鐜鍙ャ?br>
4.嫻佽緭鍏ョ殑Jpeg鐨勫鐞?br> 涓婇潰鐨勭ず渚嬪鐞嗙殑閮芥槸浠庢枃浠惰鍏ョ殑Jpeg錛屽湪鐜板疄涓紝榪樺瓨鍦ㄦ祦杈撳叆鐨凧peg銆傚湪寰堝PC娓告垙涓紝紼嬪簭鐨勬暟鎹兘琚泦涓搗鏉ユ斁鍏ヤ竴涓ぇ鏂囦歡涔嬩腑錛屾渶鍏稿瀷鐨勫綋灞炴毚闆殑mpq鏂囦歡銆傚綋榪欎簺鏂囦歡琚鍏ュ唴瀛樻椂錛屽氨褰㈡垚浜嗗瓧鑺傛祦褰㈠紡鐨勬枃浠躲傚皢涔嬪瓨涓轟復鏃舵枃浠訛紝鐒跺悗鍐嶇敤涔嬪墠鐨勬柟娉曪紝鏄劇劧鏄鏂規硶銆傝繖鏃跺彲浠ラ噰鐢╦peg_arr_src鍑芥暟鏉ユ浛鎹peg_stdio_src鍑芥暟銆?br> 榪欎竴鐐硅繕鍙互鍙傝冧互涓嬫枃妗o紝涓嶈繃璇ユ枃閽堝鐨勫ソ鍍忔槸鏃х増鏈紝浣跨敤鏃惰娉ㄦ剰銆?br> http://blog.china.com/u/060803/5544/200608/15355.html
]]>