程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> CxImage在VC下的配置與使用教程

CxImage在VC下的配置與使用教程

編輯:關於C語言
 

之前每次用到圖片處理,總要去找些主流開源庫,後來才發現CxImage這個開源工程還蠻好用,支持BMP、GIF、ICO、JPG、PNG、TIFF等格式,對普通應用程序開發者而言,都不是專門研究圖像編解碼,再者圖片、視頻、音樂這幾種文件格式也是最混亂,版本也最繁雜,兼容問題永遠解不完......剛看到CxImage工程會感覺很大很繁雜,但其實使用起來,比起用開源視頻解碼庫要少多多了,非常方便。

本文僅演示CxImage在VC++ 6.0用法,更多功能演示可參考官方鏈接及其demo程序。

一、CxImage介紹

CxImage是個C++圖像處理庫,可載入、保存、顯示和轉換圖像,支持透明圖層、多圖層,支持BMP、GIF、JPG、PNG、MNG、TIF、ICO、TGA、PCX、J2K、JBG、RAS、PNM、RAW及PSD等格式圖像文件。

Demo工程支持VC++ 及 Visual Studio編譯環境。

下載地址:http://sourceforge.net/projects/cximage/

二、CxImage使用

1、下載CxImage zip包

解壓到當前工程MyTest的CxImage目錄下。CxImage工程鏈接方式支持靜態鏈接和動態鏈接方式。本文介紹靜態鏈接方式。如果您想測試自帶的Demo程序則直接使用其目錄下的demo工程,直接就可編譯運行。

2、添加CxImage相關工程

添加CxImage工程到當前工程MyTest下

包括:

  • cximage.dsp —— 生成cximage lib庫
  • demo.dsp —— demo工程
  • jasper.dsp —— 圖像庫
  • Jpeg.dsp —— 圖像庫
  • mng.dsp —— 圖像庫
  • png.dsp —— 圖像庫
  • tiff.dsp —— 圖像庫
  • zlib.dsp —— 依賴庫

cximage目錄下的其它圖像庫,根據需要添加。

3、設置鏈接參數和格式支持

程序鏈接在工程Setting——LINK裡設置,注意Debug版本和Release版本需對應設置。

  • cximage/Cximage/Debug/cximage.lib
  • cximage/jasper/Debug/jasper.lib
  • cximage/jpeg/Debug/jpeg.lib
  • cximage/png/Debug/png.lib
  • cximage/zlib/Debug/zlib.lib

圖像格式支持,可修改頭文件:cximage/Cximage/ximacfg.h中的下面一段(1——表示支持,0表示不支持也就是關閉):

  • // CxImage supported formats
  • #define CXIMAGE_SUPPORT_BMP 1
  • #define CXIMAGE_SUPPORT_GIF 1
  • #define CXIMAGE_SUPPORT_JPG 1
  • #define CXIMAGE_SUPPORT_PNG 1
  • #define CXIMAGE_SUPPORT_ICO 0///
  • #define CXIMAGE_SUPPORT_TIF 0///
  • #define CXIMAGE_SUPPORT_TGA 0///
  • #define CXIMAGE_SUPPORT_PCX 0///
  • #define CXIMAGE_SUPPORT_WBMP 1
  • #define CXIMAGE_SUPPORT_WMF 0///
  • #define CXIMAGE_SUPPORT_JP2 1
  • #define CXIMAGE_SUPPORT_JPC 1
  • #define CXIMAGE_SUPPORT_PGX 0///
  • #define CXIMAGE_SUPPORT_PNM 0
  • #define CXIMAGE_SUPPORT_RAS 0
  • #define CXIMAGE_SUPPORT_JBG 0 // GPL'd see ../jbig/copying.txt & ../jbig/patents.htm
  • #define CXIMAGE_SUPPORT_MNG 0
  • #define CXIMAGE_SUPPORT_SKA 0
  • #define CXIMAGE_SUPPORT_RAW 0
  • #define CXIMAGE_SUPPORT_PSD 0

配置方法參考下圖(來源於下文官方鏈接),注意需要幾種庫,那麼ximacfg.h配置、MyTest設置鏈接庫、MyTest工程內子工程三者要對應:

4、編譯圖像庫

CxImage支持Debug、Release、Unicode Debug、Unicode Release版本編譯,注意需要跟MyTest自己工程對應。先編CxImage庫,再編譯MyTest工程。

5、測試CxImage程序

如下程序演示,使用CxImage庫並加載一張jpg圖片,然後繪制到靜態文本控件裡的全部過程。摘自自己以前的程序片段:

	#include  "cximage\CxImage\ximage.h"
	CxImage *m_pCSample;
	HBITMAP m_SampleBitMap;

	m_SamplePic.ModifyStyle(SS_BLACKFRAME,SS_BITMAP|SS_CENTERIMAGE); 

	if(m_pCSample != NULL) {
		delete m_pCSample;
		m_pCSample=NULL;
	}
	m_pCSample = new CxImage();
	m_pCSample ->Load("sample.jpg",CXIMAGE_FORMAT_JPG);
	if(m_pCSample ->AlphaIsValid())//Refer to CxImage::Mix
		m_pCSample ->AlphaCreate();

	m_iImageHeight = m_pCSample ->GetHeight();
	m_iImageWidth = m_pCSample ->GetWidth();

	//HDC hDC = ::GetDC(NULL);//ok
	HDC hDC = m_SamplePic.GetDC()->m_hDC;//ok
	//Resample
	CRect lRect;
	m_SamplePic.GetClientRect(&lRect);
	m_pCSample->Resample(lRect.right,lRect.bottom);

	//Display
	if (m_SampleBitMap) {
		DeleteObject(m_SampleBitMap);
		m_SampleBitMap=NULL;
	}

	m_SampleBitMap = m_pCSample->MakeBitmap(hDC);
	m_SamplePic.SetBitmap(m_SampleBitMap);
	

仔細浏覽了一下,從上到下基本是完整的,除了m_SamplePic是static空間的控制變量,這個沒加進來。

三、CxImage使用提示

使用CxImage工程時,因為封裝的太過傻瓜化,所以,經常發現您需要的功能總是不知如何實現,這時可通過如下方法:

1、閱讀cximage.h這個文件下函數聲明

2、結合demo程序,凡是需要的功能基本全部可以跟蹤出來具體的用法

3、下面的官方參考網址示例

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved