利用幂函数f(x)=xr对R\G\B通道的像素值进行变换。f(x)是每个像素R\G\B通道的变换函数:x是变换前某像素某个通道的值,f(x)是变换后对应像素相应

晨风牧笛 2019-06-02 02:33:05
这个程序实现将图片转化成底片效果。
底片效果使用如下公式:
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"));//加载并解压缩成24位真彩色数字图像

// 显示原始图像
putimage(0, 0, &img);

// 任意键执行
getch();

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

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

// 任意键关闭绘图环境
getch();
closegraph();
}
...全文
1810 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lincz4 2019-06-09
  • 打赏
  • 举报
回复
这个怎么用VC来写啊…………

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧