www.pudn.com > dip_1_1_bmp2jpeg.rar > Image.h


/***************************************************************/ 
/*文件名:     image.h               				           */ 
/*文件描述:                                                   */ 
/*相关文件:   image.cpp                                       */ 
/*主要函数:                                                   */ 
/*提交日期:                        作  者:王瑞 张洪明        */ 
/*编 辑 器: Visual C++                                        */ 
/*版权:     先进人及通信联合实验室                            */ 
/*版权说明:任何使用必须保留版权信息和历史纪录信息			   */ 
/*修改纪录:												   */ 
/*日  期        版本        修改人         修改内容            */ 
/***************************************************************/ 
 
#ifndef	_IMAGE_H_ 
#define	_IMAGE_H_ 
 
class CImage : public CObject 
{ 
	DECLARE_SERIAL(CImage) 
private: 
	DWORD Transform(WORD width); 
	DWORD ByteNumForOneLine(WORD nDIBWidth, int nBpp); 
public: 
	BOOL		m_bIsDIB; 
    CPalette*	m_pPal;	     
    BYTE*		m_pDib;     // DIB data buffer 
    DWORD		m_dwLength;  // total buffer length 
    BYTE*       m_pData;  
	CString		m_strFileName; 
	BOOL		m_a; 
public: 
	CImage(CImage& img, CSize newSize); 
    CImage(); 
    CImage(const CImage& img);//copy constructor 
    CImage(CImage& img,CPoint start,CSize size); 
    CImage(CSize size,int NumColor=256,int Bits=8); 
    CImage& operator=(const CImage& img); 
	CImage(CImage& img, float scale); 
    virtual ~CImage(); 
 
	void	ImageClear(); 
	BOOL	WriteToFile(CFile* pFile); 
	BOOL	ReadFromFile(CFile* pFile); 
    BOOL	WriteAsBMP(CFile* pFile); 
	BOOL	WriteAsPGM(CFile* pFile); 
	BOOL	WriteAsData(CFile* pFile); 
	BOOL	WriteToFile(CString filename); 
	BOOL	SaveAsText(CString	 filename, BOOL	bIsBinary = FALSE); 
	BOOL	ReadFromFile(CString filename); 
	BOOL	ReadFromPGM(CFile* pFile); 
	BOOL	ReadFromBMP(CFile* pFile); 
	BOOL	ReadFromIMG(CFile* pFile); 
	BOOL	ReadFromDAT(CFile* pFile); 
    virtual void Serialize(CArchive &ar); 
 
    BOOL    GetColorImage(BYTE* pData,DWORD dwWidth,DWORD dwHeight); 
    CBitmap* MakeBitmap(CDC* pDC, CSize& bmSize); // bmsize returned 
	BOOL	CreateDIBPalette(); 
	BOOL	CreateGreyPalette(); 
	BOOL	CreateGreyDib(); 
 
    BOOL	Display(CDC*, CPoint origin) const; 
    BOOL	Stretch(CDC*, CPoint origin, CSize size) const; 
 
    BOOL    ValidImage(); 
	WORD	Bits() const;  // bits per pixel 
    WORD	NumColors() const;//real colors  
    DWORD	Length() const; 
    WORD	Height() const; 
    WORD	Width() const; 
    CSize	Size() const; 
	CPalette* Palette() const; 
 
	void ShrinkImage(BYTE *scrImage, BYTE* destImage, WORD w, WORD h, float cscale); 
	void ShrinkImage(BYTE *scrImage, BYTE* destImage, WORD scrW, WORD scrH,WORD destW, WORD destH); 
 
	UINT	SetPalette(CDC* pDC,BOOL bBackground=FALSE) const; 
	void	SetDIB(BOOL Flag=TRUE); 
	BYTE*	Dib(); 
	BYTE*	Data(); 
	void	SetMonoColors(DWORD dwForeground, DWORD dwBackground); 
    BOOL	GetMonoColors(DWORD& dwForeground, DWORD& dwBackground); 
protected: 
	LPBITMAPINFOHEADER	BMInfoHdPtr() const; 
    LPBITMAPINFO		BMInfoPtr() const; 
	RGBQUAD*			BMColorTblPtr() const; 
    BOOL				AllocateMemory(BOOL bRealloc = FALSE); 
	BYTE				Get8NeiborAver(BYTE* pGreyData, WORD w, WORD h, CPoint pos); 
}; 
 
#endif