#ifndef __HGBMP_H__ #define __HGBMP_H__ #include "../base/HGDef.h" #include "../base/HGBaseErr.h" #include "HGImgFmtErr.h" #include "../base/HGImage.h" /* 压缩方式 */ #define HGIMGFMT_BMPENCODING_RGB 0L #define HGIMGFMT_BMPENCODING_RLE8 1L #define HGIMGFMT_BMPENCODING_RLE4 2L #define HGIMGFMT_BMPENCODING_BITFIELDS 3L #pragma pack(push) #pragma pack(4) typedef struct { HGUInt width; /* 宽 */ HGUInt height; /* 高 */ HGUShort bitCount; /* 每像素比特数 */ HGUInt compression; /* 压缩方式, 见HGIMGFMT_BMPENCODING_ */ HGUInt xPelsPerMeter; /* 每米的像素数x */ HGUInt yPelsPerMeter; /* 每米的像素数y */ }HGBmpLoadInfo; typedef struct { HGUInt xPelsPerMeter; /* 每米的像素数x */ HGUInt yPelsPerMeter; /* 每米的像素数y */ }HGBmpSaveInfo; #pragma pack(pop) /* 检查文件是否是BMP图像 * 参数: * 1) fileName: in, 文件名, windows系统上是GBK编码, linux系统上是UTF8编码 * 2) isBmp: out, 是否是BMP图像 * 说明: * 1) 该函数会打开文件判断文件头,而不是判断文件名后缀 */ HGEXPORT HGResult HGAPI HGImgFmt_CheckBmpFile(const HGChar* fileName, HGBool* isBmp); /* 加载BMP图像 * 参数: * 1) fileName: in, 文件名, windows系统上是GBK编码, linux系统上是UTF8编码 * 2) info: out, BMP图像加载信息, 如果不需要该信息可传NULL * 3) imgType: in, 要生成的图像类型, 参见HGBASE_IMGTYPE_*, 传0表示自动获取 * 4) imgOrigin: in, 要生成的图像数据排列方式, 参见HGBASE_IMGORIGIN_*, 传0表示自动获取 * 5) image: out, 要生成的图像句柄 * 说明: * 1) 生成的图像不使用时需要调用HGBase_DestroyImage销毁 */ HGEXPORT HGResult HGAPI HGImgFmt_LoadBmpImage(const HGChar* fileName, HGBmpLoadInfo* info, HGUInt imgType, HGUInt imgOrigin, HGImage* image); /* 保存BMP图像 * 参数: * 1) image: in, 要保存的图像句柄 * 2) info: in, BMP图像保存信息, 如果没有则传NULL * 3) fileName: in, 文件名, windows系统上是GBK编码, linux系统上是UTF8编码 * 说明: * 1) 忽略fileName的文件扩展名 * 2) 如果info不为NULL, 保存的DPI使用info指定的; 否则使用image自带的 */ HGEXPORT HGResult HGAPI HGImgFmt_SaveBmpImage(HGImage image, const HGBmpSaveInfo* info, const HGChar* fileName); #endif /* __HGBMP_H__ */