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