128 lines
3.1 KiB
C++
128 lines
3.1 KiB
C++
#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 |