Krissi

上善若水,水善利万物而不争

[图像处理] 彩色图片转化成底片效果

这个程序实现将图片转化成底片效果。

底片效果使用如下公式:

R = 0xFF - GetRValue(pMem[i]);

G = 0xFF - GetGValue(pMem[i]);

B = 0xFF - GetBValue(pMem[i]);

完整代码如下:

/////////////////////////////////////////////////////////
// 程序名称:底片效果
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20130114(beta)
// 作    者:krissi <zh@easyx.cn>
// 最后修改:2013-1-20
//
#include <graphics.h>
#include <conio.h>

// 底片效果
void ColorInvert(IMAGE *pimg)
{	
	// 获取指向显存的指针
	DWORD* pMem = GetImageBuffer(pimg);

	// 直接对显存赋值
	for(int i = pimg->getwidth() * pimg->getheight() - 1; i >= 0; i--)
		pMem[i] = (~pMem[i]) & 0x00FFFFFF;
}

// 主函数
void main()
{
	// 初始化绘图环境
	initgraph(640, 480);

	// 获取图像
	IMAGE img;
	loadimage(&img, _T("c:\\test.jpg"));

	// 显示原始图像
	putimage(0, 0, &img);
	
	// 任意键执行
	getch();

	// 底片效果
	ColorInvert(&img);

	// 显示处理后的图像
	putimage(0, 0, &img);

	// 任意键关闭绘图环境
	getch();
	closegraph();
}
分享到

添加评论