⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 image.h

📁 可以兼容MS-DOS的文件系统和指令的S3C2410平台的DOS部分源代码,加以修改可以使用在S3C2440 S3C44B0等ARM7、ARM9上
💻 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 + -