php 获取像素颜色,如何取一个像素点的RGB颜色值?

你的位置:

问答吧

-> VC

-> 问题详情

如何取一个像素点的RGB颜色值?

GDI方面的很少接触,现在项目需求硬着头皮上了!

以下的代码调试了好久,一直没有找到原因,请路过的大牛不惜赐教!

伪代码如下:

C/C++ code

classCTestDlg :publicCDialog

{public://......public:voidTextOutPut(CString str,

HFONT hNew,

HFONT&hOld,

SIZE&szt)

{

CClientDC dc(this);//设置背景色、字体颜色、模式GetWindowRect(&rt);

dc.SetBkColor(RGB(255,255,255));

dc.SetTextColor(RGB(0,0,0));

dc.SetBkMode(TRANSPARENT);

dc.SetMapMode(MM_TEXT);//输出文字hOld=(HFONT)::SelectObject(dc,hNew);

dc.TextOut(0,0,str);//这里可以得到的szt为 32*33GetTextExtentPoint32(dc,str,str.GetLength(),&szt);

COLORREF cr;

POINT pt;//开始遍历32 * 33的每个像素点颜色RGB值for(inti=0; i

{for(intj=0; j

{

pt.x=j;

pt.y=i;

cr=dc.GetPixel(pt);if(RGB(255,255,255)==cr)

{

CString str;

str.Format("当前像素:x=%d y=%d 的点为白色!",j,i);

TRACE(str);

}elseif(RGB(0,0,0)==cr)

{

CString str;

str.Format("当前像素:x=%d y=%d 的点为白色!",j,i);

TRACE(str);

}

}

}

}

};

作者: wangningyu

发布时间: 2010-09-06

http://kongfanmings.download.csdn.net/user/kongfanmings/all/2我最近也在搞这些,不过也是一知半解,现在我的程序有些眉目了 我下载资源有些东西给了我启发,我已经把分数设为0 你可以去下来看看,看能不能帮助你,上面就是连接了

作者: kongfanmings

发布时间: 2010-09-06

怎么两个都是 点为白色

作者: cxaa21

发布时间: 2010-09-06

C/C++ code

/************************************************************************//*取色*//************************************************************************/voidCMyDIPView::OnRgb()

{inti,j;

unsignedchar*lpSrc;

CMyDIPDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);if(pDoc->m_hDIB==NULL)return;

LPSTR lpDIB=(LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);intcxDIB=(int) ::DIBWidth(lpDIB);//Size of DIB - xintcyDIB=(int) ::DIBHeight(lpDIB);//Size of DIB - yLPSTR lpDIBBits=::FindDIBBits (lpDIB);//计算图像每行的字节数longlLineBytes=WIDTHBYTES(cxDIB*8);

HDC hDC=::GetDC(m_hWnd);

COLORREF clr ;char*psz=newchar[cxDIB*cyDIB*12+1];char*p=psz;for(i=0; i

{for(j=0; j

{

clr=::GetPixel(hDC,i,j);

sprintf(p,"%02x%02x%02x00",GetRValue(clr),GetGValue(clr),GetBValue(clr));

m_strRGB+=p;

}

}

delete psz;

AfxMessageBox("取色完毕!!");

::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);

Invalidate(TRUE);

}

这是我个人的取色函数也是参考我找的东西的

作者: kongfanmings

发布时间: 2010-09-06

没完全明白你要做成什么样子!!也不知道你问题是什么!!哪里出问题了

GetPixel()这个函数是指定点的RGB值

作者: hoosean

发布时间: 2010-09-06

引用 1 楼 kongfanmings 的回复:

http://kongfanmings.download.csdn.net/user/kongfanmings/all/2我最近也在搞这些,不过也是一知半解,现在我的程序有些眉目了 我下载资源有些东西给了我启发,我已经把分数设为0 你可以去下来看看,看能不能帮助你,上面就是连接了

这个链接已无法下载,能否发一份到邮箱,多谢!

koma0769@vip.qq.com

作者: wangningyu

发布时间: 2010-09-06

GetPixel()

作者: stonewater

发布时间: 2010-09-06

引用 4 楼 hoosean 的回复:

没完全明白你要做成什么样子!!也不知道你问题是什么!!哪里出问题了

GetPixel()这个函数是指定点的RGB值

这个像素点的RGB值为CLR_INVALID,说明获取失败!

Return Values

The return value is the RGB value of the pixel. If the pixel is outside of the current clipping region, the return value is CLR_INVALID.

作者: wangningyu

发布时间: 2010-09-06

引用 5 楼 wangningyu 的回复:

引用 1 楼 kongfanmings 的回复:

http://kongfanmings.download.csdn.net/user/kongfanmings/all/2我最近也在搞这些,不过也是一知半解,现在我的程序有些眉目了 我下载资源有些东西给了我启发,我已经把分数设为0 你可以去下来看看,看能不能帮助你,上面就是连接了

这个链接已无法下载,能否发一份到邮箱,多谢!

……

已发 注意查收

作者: kongfanmings

发布时间: 2010-09-06

确实有点没搞懂楼主意思,GetPixel不行么?

作者: jack54877012

发布时间: 2010-09-06

比如一个汉字白底黑字、获取到像素值为32 * 32

那么我想遍历该汉字的每个像素点颜色,判断是不是黑色,还是白色...

作者: wangningyu

发布时间: 2010-09-06

GetPixel()

作者: hucailai

发布时间: 2010-09-06

现在的问题是GetPixcel调用失败了,说明我的点坐标获取有问题!

问题是上面的代码,有什么问题吗?

作者: wangningyu

发布时间: 2010-09-06

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值