【文件属性】:
文件名称:超强的图像处理类CDib
文件大小:20KB
文件格式:RAR
更新时间:2012-06-23 05:06:33
CDib,Dib,VC++
///////////////////////图像处理函数//////////////////////////////////////
void ChangeBrightness(CDib* pOrigDib, int nChange);//nChange是亮度的改变量
//改变图像亮度 pOrigDib 为原先的图像
void ChangeContrast(CDib* pOrigDib, int nChange);//nChange是对比度的改变量
//改变图像对比度 pOrigDib 为原先的图像
void Render(CDib* pOrigDib, BYTE byRed, BYTE byGreen, BYTE byBlue);
//着色
void Scale(CDib* pOrigDib, int nWidth, int nHeight);
//缩放图像,pOrigDib 为原先的图像,nWidth为缩放后的宽度, nHeight为缩放后的高度
void Rotate(CDib* pOrigDib, int nXCenter, int nYCenter, float fTheta);
//旋转图像,pOrigDib为原图,(nXCenter,nYCenter)为旋转中心的坐标,fTheta为旋转角度
void MirrorX(CDib* pOrigDib, int x, int y, int nWidth, int nHeight);
//垂直方向的镜像变换,(x,y)为起始点,nWidth,nHeight为镜像变换的区域
void MirrorY(CDib* pOirgDib, int x, int y, int nWidth, int nHeight);
//水平方向的镜像变换,(x,y)为起始点,nWidth,nHeight为镜像变换的区域
void ConvolutionFilter(CDib* pOrigDib, int* pnKernel, int nRows, int nCols);
//卷积滤波器,pnKernel为 nRows * nCols 的卷积核
void PercentileFilter(CDib* pOrigDib, int nPercentage, int nRows, int nCols);
//百分比滤波器, nPercentage确定百分比, 模板为 nRows * nCols
void ReverseColor(); //图像反色,原先x, 变为255 - x
void DibCopy(CDib* pOrigDib); //重载 = 操作
void ClipRect(CDib* pDib, int x, int y, int nWidth, int nHeight); //剪切操作
////////////////////////////////////////////////////////////////////////////////
/////////////////文件存取函数///////////////////////////////////////////////////
void SaveToBMPFile(const char* pstFileName); //存为位图文件,按其自身的位数存储
void SaveToJPGFile(const char* pszJpgFileName,int nQuality); //存为JPG文件
void LoadFromJPGFile(const char* psrFileName); //从JPG文件中读取
void LoadFromBMPFile(const char* pszDibFileName); //从BMP文件中读取
void SaveAs256Bitmap(const char *pszDibFileName); //存为256色位图
void SaveAsBWBitmap(const char *pszDibFileName); //存为单色位图
void SaveAs256GrayBitmap(const char *pszDibFileName); //存为256级灰度位图
void SaveAs24BitBMPFile(const char* pstFileName); //存为24位位图
////////////////////////////////////////////////////////////////////////////////
////////////////图像格式转换函数////////////////////////////////////////////////
bool GetHistValue(int nModulus, int nCoef, int* pRed, int* pGreen, int* pBlue, int* pGray);
//取得直方图的统计数值
bool ChangeTo256Gray(CDib* pOrigDib = NULL);
//将图像转换成256色灰度图,pOrigDib为待转换的图像,缺省则转换自身
void SetTo256Gray();
bool ChangeToBW(CDib* pOrigDib = NULL, int byCritical = 128);
//二值化,BW: black & white, byCritical为阈值,缺省为128
void SetToBW();
void QuantizeColor(LPBYTE lpbyDibBits24, int nScanWidth, int nScanHeight, LPBYTE lpbyDibBits8, CPalette* pPalette);
//对颜色进行量化, 结果被保存在逻辑调色盘pPalette中, 同时将24位数据量化为8位数据, 并存放于lpbyDdbBits8之中
//该算法保留系统默认的20种静态颜色
void SetTo24Bitmap(); //格式转换,置颜色深度为24位真彩色
void SetTo256Color(); //格式转换, 置颜色深度为256色(8位)
//////////////////////////////////////////////////////////////////////////////////
#ifdef _DEBUG
virtual void Dump(CDumpContext& dc) const;
virtual void AssertValid() const;
#endif
private:
void Sort(int *p, int length);
//methods
void Init();
int IncreaseContrast(int nOrigColor,int nChange);
//OrigColor为原值,函数返回改变后的值
int DecreaseContrast(int nOrigColor,int nChange);
BYTE* GetDib24Bit(DWORD nOrigSize, int nWidth, int nHeight);
//将图像格式转换为24位
HPALETTE CreateBitmapPalette();
//attributes
BYTE m_byUpper; //像素颜色的上阀值
BYTE m_byLower; //像素颜色的下阀值
};
#endif/*///////////////////////////////////////////////////////////////////////
// End of file 'Dib.h' //
/////////////////////////////////////////////////////////////////////////////*/
【文件预览】:
Dib.cpp
Dib.h
网友评论
- 还没开始用
- 功能很强大,好多用不上的功能都有了
- 非常好,感谢分享,我已经使用到我的程序中 了
- 非常好,感谢分享,我已经使用到我的程序中
- 非常好 呵呵 现在也可以用Cimage
- 还不错,值得学习,正能用到这个
- 功能很多,很好
- 还不错,是有用的东西。不过其实对我帮助不大,要是给我整个代码就好了,否则觉得不是很值得这个分值。
- 很有用,推荐~
- 不错的类库,蛮好用的
- 功能简单了些
- 功能很强大,好多用不上的功能都有了
- 功能很多,很好
- 挺好的,挺好用的
- 确实好用,楼主辛苦了
- 非常好用~谢谢分享!
- 资源还不错,读写图片很好
- 好,就是还得下载一个jil
- 谢谢分享,很有用,推荐~
- 很不错,要是 把jpeg的那个库也附上就好了
- 功能不较强大,但是还缺IJL!
- 功能确实很强
- 功能比较全,嵌入图像程序中,编程方便的很
- 功能真的很强大啊,比网上找的其他的CDib类好多了
- 很不错,要是 把jpeg的那个库也附上就好了
- 很好的CDIB类,比我在学校那时候下的一个功能强很多
- 功能强大的CDIB类,谢谢楼主分享,很好用
- 功能非常详细,但是本来想用来做Splash界面的,没用上。
- 真心推荐,基本功能都有了,学习了
- 真心推荐,位图的功能全,写的很具体,十分有用