www.pudn.com > isee_code01231.zip > Contrast.cpp
/********************************************************************
Contrast.cpp - ISee图像浏览器—图像处理模块图像亮度,对比度调节
内部处理函数实现代码文件
版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's
这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用许可证
条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你
的选择)用任何更新的版本。
发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
目地的隐含的担保。更详细的情况请参阅GNU通用许可证。
你应该已经和程序一起收到一份GNU通用许可证(GPL)的副本。如果还没有,
写信给:
The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
MA02139, USA
如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联
系:
http://isee.126.com
http://www.vchelp.net
或:
iseesoft@china.com
作者:马翔
e-mail:hugesoft@yeah.net
功能实现:亮度,对比度调节内部实现函数
文件版本:
Build 000123
Date 2000-12-3
********************************************************************/
#include "stdafx.h"
#include "Contrast.h"
// 亮度调节内部处理函数
void _fnSPE_ChangeBrightness(int iDelta,BYTE *pRed,BYTE *pGrn,BYTE *pBlu)
{
int iRed=*pRed+iDelta;
int iGrn=*pGrn+iDelta;
int iBlu=*pBlu+iDelta;
// 些处代码用于确保调整后的RGB值在0~255之间
*pRed=(BYTE)((iRed)<(0)?(0):((iRed)>(255)?(255):(iRed)));
*pGrn=(BYTE)((iGrn)<(0)?(0):((iGrn)>(255)?(255):(iGrn)));
*pBlu=(BYTE)((iBlu)<(0)?(0):((iBlu)>(255)?(255):(iBlu)));
}
// 对比度调节内部处理函数
void _fnSPE_ChangeContrast(int nDelta,BYTE *pRed,BYTE *pGrn,BYTE *pBlu)
{
// 依据增量的正负分别调用不同函数进行处理
if(nDelta>=0)
{
int Low=0+nDelta;
int High=255-nDelta;
float Grad=((float)(High-Low))/255;
_fnSPE_IncreaseContrast(pRed,Low,High,Grad);
_fnSPE_IncreaseContrast(pGrn,Low,High,Grad);
_fnSPE_IncreaseContrast(pBlu,Low,High,Grad);
}
else
{
float Grad=255/(255+(float)nDelta+(float)nDelta);
_fnSPE_DecreaseContrast(pRed,nDelta,Grad);
_fnSPE_DecreaseContrast(pGrn,nDelta,Grad);
_fnSPE_DecreaseContrast(pBlu,nDelta,Grad);
}
}
// 对比度调节增量为正时内部处理函数
void _fnSPE_IncreaseContrast(BYTE *pByte,const int Low,const int High,const float Grad)
{
if (*pByte<=Low)
*pByte=0;
else if((Low<*pByte)&&(*pByte