#include<graphics.h>
#include<conio.h>
void main()
{
initgraph(640,480);
IMAGE img; //定义image
int x,y,cxy,num; //cxy是指定的背景颜色所在的任何一点
int R,G,B,r,g,b;
loadimage(&img,".\\img\\bb.bmp");//图片是单一的背景颜色
putimage(0,0,&img);
SetWorkingImage();
cxy=getpixel(0,0);//默认背景颜色在这点,也可以通过鼠标函数获取,或者自己修改。
r=GetRValue(cxy);
g=GetGValue(cxy);
b=GetBValue(cxy);
DWORD *pMem=GetImageBuffer(&img);//获取图片的显存指针。
for(y=0;y<img.getheight();y++)//逐个像素点判断
{
for(x=0;x<img.getwidth();x++)
{
num=x+y*img.getwidth();
R=GetRValue(pMem[num]);
G=GetGValue(pMem[num]);
B=GetBValue(pMem[num]);
if(B==r&&R==b&&G==g)//如果图中颜色与背景颜色相同变成白色
pMem[num]=WHITE;
else
pMem[num]=BLACK;//否则变成黑色
}
}
FlushBatchDraw();
putimage(0,0,&img);//还可以通过saveimage保存
getch();closegraph();
}
#include<conio.h>
void main()
{
initgraph(640,480);
IMAGE img; //定义image
int x,y,cxy,num; //cxy是指定的背景颜色所在的任何一点
int R,G,B,r,g,b;
loadimage(&img,".\\img\\bb.bmp");//图片是单一的背景颜色
putimage(0,0,&img);
SetWorkingImage();
cxy=getpixel(0,0);//默认背景颜色在这点,也可以通过鼠标函数获取,或者自己修改。
r=GetRValue(cxy);
g=GetGValue(cxy);
b=GetBValue(cxy);
DWORD *pMem=GetImageBuffer(&img);//获取图片的显存指针。
for(y=0;y<img.getheight();y++)//逐个像素点判断
{
for(x=0;x<img.getwidth();x++)
{
num=x+y*img.getwidth();
R=GetRValue(pMem[num]);
G=GetGValue(pMem[num]);
B=GetBValue(pMem[num]);
if(B==r&&R==b&&G==g)//如果图中颜色与背景颜色相同变成白色
pMem[num]=WHITE;
else
pMem[num]=BLACK;//否则变成黑色
}
}
FlushBatchDraw();
putimage(0,0,&img);//还可以通过saveimage保存
getch();closegraph();
}