📄 image.h
字号:
/***********************************Seekfor Image Library v1.0**********************************************************************************
*** ************* ******* v1.0
* ** *** ***
** * *** ***
** *** ***
*** * *** ***
*** *** ***
*** *** ***
*** *** ***
*** *** ***
**** *** ***
***** *** ***
***** *** ***
**** *** ***
***** *** ***
**** *** ***
*** *** ***
** *** ***
*** *** ***
*** *** ***
*** *** ***
** *** ***
* ** *** ***
** ** *** *** *
*** *** *** *** **
*** ************* ***************
本软件包支持如下功能:
(1)支持*.bmp文件所有格式(RGB-24bits,RGB-16bits,RGB-8bits,RGB-4bits,RGB-1bit,RLE-8bits,RLE-4bits)的解码和编码
(2)支持*.pcx文件所有格式(RGB-24bits,RGB-8bits,RGB-4bits,RGB-1bits,RLE-24bits,RLE-8bits,RLE-4bits,RLE-1bit)的编码和解码
(3)支持*.avi文件(未压缩格式和所有采用RLE格式压缩)的解码和编码
更新软件请联系:
QQ:82054357
MSN:sfrad32@hotmail.com
Mail:Seek_for@163.com
**********************************************************************************************************************************************/
#ifndef __IMAGE_H__
#define __IMAGE_H__
#include "types.h"
/*支持的行为*/
#define SUPPORT_BMP_DECODE 1
#define SUPPORT_BMP_ENCODE 0
#define SUPPORT_PCX_DECODE 1
#define SUPPORT_PCX_ENCODE 0
#define SUPPORT_AVI_DECODE 1
#define SUPPORT_AVI_ENCODE 0
/*是否返回颜色索引(当图象有调色板时,返回颜色索引而不是RGB值)*/
#define RETURN_COLOR_INDEX 0
/*默认的调色板 0---使用MAC PAL,1---使用Windows PAL*/
#define USE_WINDOWS_PAL 1
/*黑白编码最小亮度,当亮度>GRAY_0_LEVEL编码为1,否则编码为0*/
#define GRAY_0_LEVEL 0x72
/*数据类型定义*/
#define COLORREF int
typedef struct
{
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
}_BITMAPINFOHEADER;
/*颜色合成算法定义*/
#ifndef RGB
#define RGB(r,g,b) ((COLORREF)r<<16|((COLORREF)g<<8)|((COLORREF)b))
#endif
/*颜色分量获取*/
#define RGB_R(cr) ((BYTE)(cr))
#define RGB_G(cr) ((BYTE)((cr)>>8))
#define RGB_B(cr) ((BYTE)((cr)>>16))
/*压缩算法定义*/
#ifndef BI_RGB
#define BI_RGB 0x00
#define BI_RLE8 0x01
#define BI_RLE4 0x02
#endif
/*格式定义*/
#define FORMAT_BMP 0x00
#define FORMAT_PCX 0x01
#define FORMAT_AVI 0x02
#define FORMAT_UNKNOW 0x03
/*回调函数原型*/
typedef DWORD (*IMAGE_CALLBACK)(DWORD status,DWORD parm1,DWORD parm2);
/*格式通知:parm1=0,parm2=FORMAT_xx,回调用来检查格式是否有效*/
#define STATUS_FORMAT 0x00
/*获取缓冲区parm1=长度,parm2=0,回调应该返回一个缓冲区指针*/
#define STATUS_BUFFER 0x01
/*完成一帧parm1=是否倒|长度|宽度,parm2=图象缓冲区地址,回调应该显示这一帧图象*/
#define STATUS_FRAME 0x02
/*分配内存parm1=长度,parm2=0,回调应该返回一个RAM指针*/
#define STATUS_MALLOC 0x03
/*释放内存,parm1=0,parm2=地址,回调应该把该指针释放*/
#define STATUS_FREE 0x04
/*等待(AVI使用),parm1=等待的ms数,parm2=0,回调应该调用Sleep(parm1)实现等待parm1毫秒*/
#define STATUS_WAIT 0x05
/*缓冲区跳过,parm1=长度,parm2=0,回调应该跳过一定长度的内容*/
#define STATUS_SKIP 0x06
/*写文件或其他(for encoder)*/
#define STATUS_WRITE 0x07
/*encode参数*/
#define QUERY_WIDTH 0x00
#define QUERY_HEIGHT 0x01
#define QUERY_BPP 0x02
#define QUERY_COMPRESSION 0x03
#define QUERY_DELAYTIME 0x05
#define QUERY_TOTALS 0x06
/*或取一个DWORD数据*/
#define GETDWORD(ptr) (ptr+=4,((DWORD)(*(ptr-4)))|((DWORD)(*(ptr-3))<<8)|((DWORD)(*(ptr-2))<<16)|((DWORD)(*(ptr-1))<<24))
/*获取一个WORD数据*/
#define GETWORD(ptr) (ptr+=2,(*(ptr-2))|((WORD)(*(ptr-1))<<8))
/*输出一个DWORD数据*/
#define SETDWORD(ptr,item)\
{\
*ptr++=(DWORD)item;\
*ptr++=(DWORD)item>>8;\
*ptr++=(DWORD)item>>16;\
*ptr++=(DWORD)item>>24;\
}\
/*输出一个WORD数据*/
#define SETWORD(ptr,item)\
{\
*ptr++=(WORD)item;\
*ptr++=(WORD)item>>8;\
}\
/*计算差异*/
#define DIFFRENT(a,b) (a>b?a-b:b-a)
/*内部公共函数*/
#ifdef __cplusplus
extern "C"
{
#endif
void reset_GCTS();
COLORREF GETCOLOR(BYTE);
void Colors2Index(COLORREF*buffer,DWORD len,BYTE bits);
void InvertBuffer(IMAGE_CALLBACK,COLORREF*);
void BMP_RLE8_decode(BYTE*buffer,COLORREF*image,IMAGE_CALLBACK cb,DWORD len);
void BMP_RLE4_decode(BYTE*buffer,COLORREF*image,IMAGE_CALLBACK cb,DWORD len);
void BMP_RGB1_decode(BYTE*ptr,COLORREF*image,IMAGE_CALLBACK cb,DWORD len);
void BMP_RGB4_decode(BYTE*ptr,COLORREF*image,IMAGE_CALLBACK cb,DWORD len);
void BMP_RGB8_decode(BYTE*ptr,COLORREF*image,IMAGE_CALLBACK cb,DWORD len);
void BMP_RGB16_decode(BYTE*ptr,COLORREF*image,IMAGE_CALLBACK cb,DWORD len);
void BMP_RGB24_decode(BYTE*ptr,COLORREF*image,IMAGE_CALLBACK cb,DWORD len);
void BMP_RLE8_encode(COLORREF*buffer,DWORD len);
void BMP_RLE4_encode(COLORREF*buffer,DWORD len);
void BMP_RGB1_encode(COLORREF*buffer,DWORD len);
void BMP_RGB4_encode(COLORREF*buffer,DWORD len);
void BMP_RGB8_encode(COLORREF*buffer,DWORD len);
void BMP_RGB16_encode(COLORREF*buffer,DWORD len);
void BMP_RGB24_encode(COLORREF*buffer,DWORD len);
/*外部API*/
BOOL BMP_decode(IMAGE_CALLBACK cb,DWORD size);
BOOL PCX_decode(IMAGE_CALLBACK cb,DWORD size);
BOOL AVI_decode(IMAGE_CALLBACK cb,DWORD size);
BOOL BMP_encode(IMAGE_CALLBACK cb);
BOOL PCX_encode(IMAGE_CALLBACK cb);
BOOL AVI_encode(IMAGE_CALLBACK cb);
BOOL Images_decode(char*buffer,int size,void* lpfnCB);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -