青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

asm, c, c++ are my all
-- Core In Computer
posts - 139,  comments - 123,  trackbacks - 0

在向大家介紹CxImage類庫之前,先向大家推薦一個(gè)優(yōu)秀的站點(diǎn): http://www.codeproject.com 。這個(gè)站點(diǎn)有很多值得收藏的文章和源碼。本文就是根據(jù)此站點(diǎn)相關(guān)信息寫成。

關(guān)于這個(gè)類,可以看CodeProject上的文章:http://www.codeproject.com/bitmap/CXImage.asp

CxImage是一個(gè)可以用于MFC的C++類,可以打開,保存,顯示,轉(zhuǎn)換各種格式的圖像文件,比如BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 等格式的文件。可以實(shí)現(xiàn)BMP<->JPG,PNG?<>TIFF格式等等的轉(zhuǎn)換。

它的作者是: Davide Pizzolato ,主頁: http://www.xdp.it/

CxImage類庫是一個(gè)優(yōu)秀的圖像操作類庫。它可以快捷地存取、顯示、轉(zhuǎn)換各種圖像。有的讀者可能說,有那么多優(yōu)秀的圖形庫,如OpenIL,FreeImage,PaintLib等等,它們可謂是功能強(qiáng)大,齊全,沒必要用其它的類庫。但我要說,這些類庫基本上沒有免費(fèi)的,使用這些類庫,你要被這樣那樣的許可協(xié)議所束縛。在這點(diǎn)上,CxImage類庫是完全免費(fèi)的。另外,在使用上述類庫時(shí),你會(huì)遇到重重麻煩。因?yàn)樗鼈兇蟛糠质瞧脚_(tái)無關(guān)的,且用C語言寫成,有的還夾雜著基本的C++ wrapper和成堆德編譯選項(xiàng)的聲明需要你去處理。而CxImage類庫在這方面做得很好。還有讓我最看好的,就是作者完全公開了 源代碼 。相對(duì)于那些封裝好的圖形庫和GDI+來說,這一點(diǎn)使我們可以進(jìn)一步學(xué)習(xí)各種編解碼技術(shù),而不再浮于各種技術(shù)的表面。 CxImage類庫的結(jié)構(gòu):

一個(gè)CxImage對(duì)象是一個(gè)擴(kuò)展了的位圖。作者只是在位圖結(jié)構(gòu)上添加了一些起存儲(chǔ)信息作用的成員變量。一個(gè)CxImage對(duì)象(同時(shí))也是一組層。每個(gè)層只有在需要時(shí)才會(huì)分配相應(yīng)的緩沖區(qū)。CxImage::pDib代表著背景圖像,CxImage::pAlpha代表著透明層,CxImage::pSelection代表著被選中的層,被用來創(chuàng)建圖像處理時(shí)讓用戶感興趣的區(qū)域。在這三個(gè)特殊層面的基礎(chǔ)上,你可以增加一些額外的層,這些層可以存儲(chǔ)在CxImage::pLayers中。一般說來,層是一個(gè)完整的CxImage對(duì)象。因此,你可以構(gòu)造很復(fù)雜的嵌套層。下面是CxImage的一些成員變量:

class ?CxImage
??
{
??
??
protected
:
??
void * ?pDib;???????????? // 包含文件頭,調(diào)色板等等

??BITMAPINFOHEADER?head;? // 標(biāo)準(zhǔn)的文件頭(位圖)
??CXIMAGEINFO?info;?????? // 擴(kuò)展了的信息
??BYTE * ?pSelection;?????? // 用戶選中的區(qū)域
??BYTE * ?pAlpha;?????????? // alpha通道
??CxImage ** ?pLayers;????? // 通用層
??}

typedef?
struct ?tagCxImageInfo? {
????DWORD???dwEffWidth;???????
// DWORD?掃描線寬

????BYTE * ???pImage;??????????? // 圖像位數(shù)
???? void * ???pGhost;??????????? // if?this?is?a?ghost,?pGhost?point?to?the?body
????DWORD???dwType;??????????? // 原圖像的格式
???? char ????szLastError[ 256 ];? // 出錯(cuò)信息
???? long ????nProgress;???????? // 監(jiān)視循環(huán)的次數(shù)
???? long ????nEscape;?????????? // 跳出標(biāo)志
???? long ????nBkgndIndex;?????? // GIF,?PNG,?MNG格式使用
????RGBQUAD?nBkgndColor;?????? // RGB三原色透明度
????BYTE????nQuality;????????? // JPEG格式使用
???? long ????nFrame;??????????? // TIF,?GIF,?MNG使用?:實(shí)際的幀數(shù)
???? long ????nNumFrames;??????? // TIF,?GIF,?MNG使用?:幀總數(shù)
????DWORD???dwFrameDelay;????? // GIF,?MNG使用
???? long ????xDPI;????????????? // 水平分辨率
???? long ????yDPI;????????????? // 垂直分辨率
????RECT????rSelectionBox;???? // 選中的矩形區(qū)
????BYTE????nAlphaMax;???????? // 陰影的最大不透明度
???? bool ????bAlphaPaletteEnabled;?? // 如果調(diào)色板中有Alpha通道則為真
???? bool ????bEnabled;????????? // 打開繪圖函數(shù)
???? long ????xOffset;
????
long
????yOffset;
DWORD???dwEncodeOption;???
// 一些編碼選項(xiàng)

RGBQUAD?last_c;??????????? // 一些優(yōu)化選項(xiàng)
????BYTE????last_c_index;
????
bool
????last_c_isvalid;
????
long
????nNumLayers;
????DWORD???dwFlags;
}
?CXIMAGEINFO;

?

要在picture box中顯示一個(gè)png格式的文件,只需:
CxImage image("myfile.png", CXIMAGE_FORMAT_PNG);
HBITMAP m_bitmap = image.MakeBitmap(m_picture.GetDC()->m_hDC);
m_picture.SetBitmap(m_bitmap);
其它格式則類推。

Examples: how to ...
... convert from a format to another

CxImage??image;
// ?bmp?->?jpg

image.Load( " image.bmp " ,?CXIMAGE_FORMAT_BMP);
if ?(image.IsValid())
{
????
if ( ! image.IsGrayScale())?image.IncreaseBpp( 24
);
????image.SetJpegQuality(
99
);
????image.Save(
" image.jpg "
,CXIMAGE_FORMAT_JPG);
}

// ?png?->?tif
image.Load( " image.png " ,?CXIMAGE_FORMAT_PNG);
if ?(image.IsValid())
{
????image.Save(
" image.tif "
,CXIMAGE_FORMAT_TIF);
}


?load?an?image?resource
// Load?the?resource?IDR_PNG1?from?the?PNG?resource?type
CxImage * ?newImage? = ? new ?CxImage();
newImage
->
LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_PNG1),
???????????????????????
" PNG "
),CXIMAGE_FORMAT_PNG);
or
// Load?the?resource?IDR_JPG1?from?DLL

CxImage * ?newImage? = ? new ?CxImage();
HINSTANCE?hdll
= LoadLibrary( " imagelib.dll "
);
if ?(hdll)
{
????HRSRC?hres
= FindResource(hdll,MAKEINTRESOURCE(IDR_JPG1), " JPG "
);
????newImage
->
LoadResource(hres,CXIMAGE_FORMAT_JPG,hdll);
????FreeLibrary(hdll);
}

or
// Load?a?bitmap?resource;
HBITMAP?bitmap? = ?::LoadBitmap(AfxGetInstanceHandle(),
??????????????????????????????MAKEINTRESOURCE(IDB_BITMAP1)));
CxImage?
* newImage? = ? new
?CxImage();
newImage
->
CreateFromHBITMAP(bitmap);
?decode?an?image?from?memory
CxImage?image((BYTE
*
)buffer,size,image_type);
orCxMemFile?memfile((BYTE
*
)buffer,size);
CxImage?image(
&
memfile,image_type);
orCxMemFile?memfile((BYTE
*
)buffer,size);
CxImage
* ?image? = ? new
?CxImage();
image
-> Decode( &
memfile,type);
?encode?an?image?
in
?memory
long ?size = 0
;
BYTE
* ?buffer = 0
;
image.Encode(buffer,size,image_type);

free(buffer);
orCxMemFile?memfile;
memfile.Open();
image.Encode(
&
memfile,image_type);
BYTE
* ?buffer? =
?memfile.GetBuffer();
long ?size? =
?memfile.Size();

free(buffer);
?create?a?multipage?TIFF
CxImage?
* pimage[ 3
];
pimage[
0 ] =&
image1;
pimage[
1 ] =&
image2;
pimage[
2 ] =&
image3;

FILE
*
?hFile;
hFile?
= ?fopen( " multipage.tif " , " w+b "
);

CxImageTIF?multiimage;
multiimage.Encode(hFile,pimage,
3
);

fclose(hFile);
orFILE
*
?hFile;
hFile?
= ?fopen( " c:\\multi.tif " , " w+b "
);

CxImageTIF?image;
image.Load(
" c:\\1.tif "
,CXIMAGE_FORMAT_TIF);
image.Encode(hFile,
true
);
image.Load(
" c:\\2.bmp "
,CXIMAGE_FORMAT_BMP);
image.Encode(hFile,
true
);
image.Load(
" c:\\3.png "
,CXIMAGE_FORMAT_PNG);
image.Encode(hFile);

fclose(hFile);

?copy
/
paste?an?image
// copy

HANDLE?hDIB? = ?image -> CopyToHandle();
if ?(::OpenClipboard(AfxGetApp() -> m_pMainWnd -> GetSafeHwnd()))?
{
????
if (::EmptyClipboard())?
{
????????
if ?(::SetClipboardData(CF_DIB,hDIB)? == ?NULL?)?
{
????????????AfxMessageBox(?
" Unable?to?set?Clipboard?data "
?);
}
????}
????}

CloseClipboard();

// paste
HANDLE?hBitmap = NULL;
CxImage?
* newima? = ? new
?CxImage();
if ?(OpenClipboard())?hBitmap =
GetClipboardData(CF_DIB);
if ?(hBitmap)?newima ->
CreateFromHANDLE(hBitmap);
CloseClipboard();

?

需要大家注意的是:整個(gè)CxImage類庫非常大。如果你只需要能處理其中的幾種格式,你可以在主要的頭文件ximage.h中找到一些開關(guān)選項(xiàng)來關(guān)閉一些圖像庫。JPG、PNG、TIFF中的每一個(gè)庫,都會(huì)向最終程序增加約100KB的內(nèi)容。而CxImage類庫壓縮后只有約60KB。所以,你需要謹(jǐn)慎挑選一些你真正需要的類庫。作者提供的示例工程在編譯后,你會(huì)發(fā)現(xiàn)如下一些文件: ·CxImage : cximage.lib - static library ·CxImageCrtDll : cximagecrt.dll - DLL not using mfc ·CxImageMfcDll : cximage.dll - DLL using mfc ·Demo : demo.exe - program linked with cximage.lib and the C libraries ·DemoDll : demodll.exe - program linked with cximagecrt.dll ·j2k,jasper,jbig,jpeg,png,tiff,zlib : static C libraries 構(gòu)建這些工程需要耗費(fèi)幾分鐘的時(shí)間(中間文件可達(dá)60MB)。下面則是使用CxImage類庫前必須設(shè)置的一些參數(shù):

Project Settings
?|- C/C++
?|?? |- Code Generation
?|?? |?? |- Use run-time library : Multithreaded DLL (must be the same for
?|?? |?? |? all the linked libraries)
?|?? |?? |- Struct member alignment : must be the same for all the linked
?|?? |?? |? libraries
?|?? |- Precompiled headers : not using precompiled headers
?|?? |- Preprocessor
?|?????? |- Additional Include Directories:? ..\cximage
?|- Link
??? |- General
??????? |- Object/library modules: ../png/Debug/png.lib
?????????????????????????????????? ../jpeg/Debug/jpeg.lib
?????????????????????????????????? ../zlib/Debug/zlib.lib
?????????????????????????????????? ../tiff/Debug/tiff.lib
??????????????????????????????????? ../cximage/Debug/cximage.lib? ...

兼容性: - Microsoft Visual C++ 6.0 (static library, DLL and OCX builds) - Microsoft Visual C++ .NET 2003 - Borland C++ Builder version 3 and version 6 - Kdevelop 2.1 with gcc 2.96 (Linux) 關(guān)于CxImage類庫作者: Davide Pizzolato,一位電子工程師。1984年開始編程,已不在乎使用何種編程語言來開發(fā)軟件。現(xiàn)就職于Askoll的電子研發(fā)部。

posted on 2006-09-10 21:07 Jerry Cat 閱讀(1297) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理



<2006年9月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用鏈接

留言簿(7)

隨筆檔案

最新隨筆

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产日韩在线一区模特| 99国产欧美久久久精品| 久久麻豆一区二区| 欧美高清一区| 午夜精品在线观看| 午夜精品美女久久久久av福利| 狠狠色伊人亚洲综合网站色| 欧美日韩在线观看一区二区| 欧美成人精品在线播放| 久久久久.com| 免费欧美网站| 欧美www视频| 免费日韩精品中文字幕视频在线| 性欧美激情精品| 欧美一级视频| 久久综合网hezyo| 蜜桃av一区二区| 麻豆成人在线播放| 欧美三级视频在线播放| 欧美日韩视频一区二区| 欧美日韩高清不卡| 欧美午夜免费影院| 国产喷白浆一区二区三区| 国产视频观看一区| 国内偷自视频区视频综合| 亚洲成人在线网站| 亚洲调教视频在线观看| 亚洲欧美日韩精品久久亚洲区 | 亚洲欧洲在线播放| 亚洲天堂免费观看| 亚洲欧美激情一区| 久久综合综合久久综合| 99天天综合性| 久久精品国产欧美亚洲人人爽| 久久午夜精品| 国产精品免费看| 一本大道久久a久久精二百| 久久久99精品免费观看不卡| 国产精品久久久久国产精品日日| 黑人一区二区三区四区五区| 亚洲视频福利| 亚洲国产精品久久| 欧美一区二区三区啪啪| 欧美日韩一区二区国产| 国产亚洲美州欧州综合国| 亚洲欧美区自拍先锋| 老司机免费视频一区二区| 亚洲欧美一区二区三区在线 | 久久国产精品久久久| 欧美诱惑福利视频| 一区二区三区鲁丝不卡| 亚洲久久视频| 国产一区二区观看| 亚洲激情国产| 欧美精品久久久久久久| 亚洲伦理自拍| 欧美一区二区三区男人的天堂 | 模特精品在线| 亚洲影院在线| 日韩系列在线| 最新日韩欧美| 欧美一区精品| 久久久夜夜夜| 久久综合狠狠综合久久综青草| 国产网站欧美日韩免费精品在线观看| 亚洲高清网站| 一区二区三区导航| 在线播放亚洲| 欧美一区日韩一区| 亚洲欧美日韩国产一区二区三区 | 亚洲精品视频一区二区三区| 一本久久综合| 亚洲欧洲一区二区天堂久久| 国产精品99久久久久久人| 一本不卡影院| 亚洲日本va在线观看| 午夜国产精品影院在线观看| 日韩午夜av| 欧美www视频| 欧美黑人国产人伦爽爽爽| 国产午夜精品在线观看| 亚洲视频日本| 亚洲在线视频免费观看| 欧美日韩国产免费| 久久精精品视频| 性欧美在线看片a免费观看| 欧美日韩精品是欧美日韩精品| 欧美成年人视频| 亚洲一区二区三| 国产主播在线一区| 亚洲影音一区| 欧美一区二区三区视频在线观看| 国产欧美成人| 国产精品久久7| 欧美片在线观看| 亚洲欧美区自拍先锋| 亚洲国产网站| 欧美亚洲免费电影| 久久影院亚洲| 国产日韩综合一区二区性色av| 亚洲男人第一网站| 一区二区三区四区国产| 亚洲专区免费| 欧美日韩精品一二三区| 国产在线观看91精品一区| 亚洲综合色在线| 久久精品一区二区| 欧美一级视频一区二区| 亚洲欧美成人在线| 午夜久久久久久| 欧美在线观看视频在线| 一区二区91| 亚洲女ⅴideoshd黑人| 亚洲欧美国产高清va在线播| 欧美中文字幕不卡| 亚洲自拍另类| 欧美国产视频日韩| 久久在线视频| 国产日韩精品视频一区| 在线亚洲成人| 日韩视频免费观看| 久久精品二区三区| 久久大综合网| 国产精品激情| 99pao成人国产永久免费视频| 黄色成人在线免费| 午夜日韩福利| 性欧美精品高清| 国产精品久久久久婷婷| 亚洲国内自拍| 1000精品久久久久久久久| 欧美一区精品| 久久这里有精品15一区二区三区| 国产精品羞羞答答xxdd| 亚洲天堂成人| 欧美一区二区三区免费观看视频| 欧美午夜视频一区二区| 99re热精品| 亚洲一级免费视频| 欧美日韩视频专区在线播放| 亚洲经典一区| 夜夜狂射影院欧美极品| 欧美精品亚洲一区二区在线播放| 欧美日韩精品免费| 亚洲精品日本| 男男成人高潮片免费网站| 欧美电影在线播放| **性色生活片久久毛片| 美女日韩欧美| 亚洲人成艺术| 亚洲欧美成人在线| 国产一区二区三区丝袜| 久久久久久久网| 亚洲欧洲一区| 亚洲影院免费观看| 国产偷久久久精品专区| 久久久久高清| 亚洲精品久久嫩草网站秘色| 一区二区三区 在线观看视频| 国产精品国产三级国产专区53 | 香蕉成人伊视频在线观看| 久久精品视频99| 91久久久亚洲精品| 欧美视频在线看| 久久激五月天综合精品| 亚洲成色www8888| 亚洲天堂免费在线观看视频| 国产欧美日韩一级| 免费观看久久久4p| 中文欧美日韩| 欧美成人精品在线| 在线综合亚洲欧美在线视频| 国产欧美精品一区二区色综合 | 亚洲天堂网站在线观看视频| 国产亚洲欧洲| 欧美另类视频在线| 欧美在线日韩| 日韩午夜精品| 男女精品网站| 亚洲欧美日产图| 亚洲日本久久| 国产亚洲欧美一区在线观看| 欧美激情精品久久久| 性做久久久久久久免费看| 亚洲人成毛片在线播放| 久久综合精品一区| 午夜激情亚洲| 一区二区三区www| 亚洲国产岛国毛片在线| 国产精品日本精品| 欧美日韩三级视频| 欧美aⅴ99久久黑人专区| 欧美一级黄色网| 亚洲小说欧美另类婷婷| 亚洲精品视频二区| 亚洲成人在线视频播放 | 日韩视频免费观看高清完整版| 欧美中文字幕不卡| 亚洲影院在线观看| 亚洲无线一线二线三线区别av|