Files
envi-code/SourceCode/Code2026/inc/XImage/XImageFile.h
T
2026-09-28 15:28:50 +08:00

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