#if !defined(__CXImageFile_H) #define __CXImageFile_H #if _MSC_VER > 1000 #pragma once #endif #ifdef GEOAPI #define DLL_EXP GEOAPI #endif #include "ximacfg.h" #ifdef GEOAPI enum ENUM_CXIMAGE_FORMATS{ CXIMAGE_FORMAT_UNKNOWN = 0, #if CXIMAGE_SUPPORT_BMP CXIMAGE_FORMAT_BMP = 1, #endif #if CXIMAGE_SUPPORT_GIF CXIMAGE_FORMAT_GIF = 2, #endif #if CXIMAGE_SUPPORT_JPG CXIMAGE_FORMAT_JPG = 3, #endif #if CXIMAGE_SUPPORT_PNG CXIMAGE_FORMAT_PNG = 4, #endif #if CXIMAGE_SUPPORT_ICO CXIMAGE_FORMAT_ICO = 5, #endif #if CXIMAGE_SUPPORT_TIF CXIMAGE_FORMAT_TIF = 6, #endif #if CXIMAGE_SUPPORT_TGA CXIMAGE_FORMAT_TGA = 7, #endif #if CXIMAGE_SUPPORT_PCX CXIMAGE_FORMAT_PCX = 8, #endif #if CXIMAGE_SUPPORT_WBMP CXIMAGE_FORMAT_WBMP = 9, #endif #if CXIMAGE_SUPPORT_WMF CXIMAGE_FORMAT_WMF = 10, #endif #if CXIMAGE_SUPPORT_JP2 CXIMAGE_FORMAT_JP2 = 11, #endif #if CXIMAGE_SUPPORT_JPC CXIMAGE_FORMAT_JPC = 12, #endif #if CXIMAGE_SUPPORT_PGX CXIMAGE_FORMAT_PGX = 13, #endif #if CXIMAGE_SUPPORT_PNM CXIMAGE_FORMAT_PNM = 14, #endif #if CXIMAGE_SUPPORT_RAS CXIMAGE_FORMAT_RAS = 15, #endif #if CXIMAGE_SUPPORT_JBG CXIMAGE_FORMAT_JBG = 16, #endif #if CXIMAGE_SUPPORT_MNG CXIMAGE_FORMAT_MNG = 17, #endif #if CXIMAGE_SUPPORT_SKA CXIMAGE_FORMAT_SKA = 18, #endif #if CXIMAGE_SUPPORT_RAW CXIMAGE_FORMAT_RAW = 19, #endif CMAX_IMAGE_FORMATS = CXIMAGE_SUPPORT_BMP + CXIMAGE_SUPPORT_GIF + CXIMAGE_SUPPORT_JPG + CXIMAGE_SUPPORT_PNG + CXIMAGE_SUPPORT_MNG + CXIMAGE_SUPPORT_ICO + CXIMAGE_SUPPORT_TIF + CXIMAGE_SUPPORT_TGA + CXIMAGE_SUPPORT_PCX + CXIMAGE_SUPPORT_WBMP+ CXIMAGE_SUPPORT_WMF + CXIMAGE_SUPPORT_JBG + CXIMAGE_SUPPORT_JP2 + CXIMAGE_SUPPORT_JPC + CXIMAGE_SUPPORT_PGX + CXIMAGE_SUPPORT_PNM + CXIMAGE_SUPPORT_RAS + CXIMAGE_SUPPORT_SKA + CXIMAGE_SUPPORT_RAW + 1 }; #endif class DLL_EXP CXImageFile { public: CXImageFile(); ~CXImageFile(); HANDLE ReadJpeg(const char *pszInput); HANDLE ReadJpeg(FILE *pszInput); // ReadJpeg函数只能够读取.jpg图像 // header - 位图信息头结构 // pData - 位图数据 DWORD ReadJpeg(const char *pszInput, BITMAPINFOHEADER &header, char* &pData); DWORD ReadJpeg(FILE *Input, BITMAPINFOHEADER &header, char* &pData); // nType 标记传入文件的类型 // 传出的文件类型为.jpg int WriteJpeg( const char *pszInput, const char *pszOutput, int nType, float fQuality = 100.); int WriteJpeg( FILE *Input, FILE *Output, int nType, float fQuality = 100.); // nType 标明传入文件的类型 HANDLE GetCopyToHandle(const char *pszInput, int nType); HANDLE GetCopyToHandle(FILE *Input, int nType); HANDLE ReadOtherPicFile(const char *pszInput); // header - 位图信息头结构 // pData - 位图数据 DWORD ReadOtherPicFile(const char *pszInput, BITMAPINFOHEADER &header, char* &pData); int OtherPicToJpeg(const char *pszInput, const char *pszOutput, float fQuality = 100.); // tools DWORD GetBmpInfoByDib(HANDLE hDib , BITMAPINFOHEADER &header, char* &pData); private: HANDLE GetDibHandle(const char *pszInput, DWORD dwType); HANDLE GetDibHandle(FILE *Input, DWORD dwType); WORD PaletteSize(LPSTR lpbi); WORD DIBNumColors(LPSTR lpbi); char* FindDIBBits(LPSTR lpbi); DWORD GetImageType(const char* pszName); }; #endif