如何用程序算出一副位图中绿色占RGB三色的百分率?

Batman 2000-01-20 05:02:00
各位大虾:

您可以用任何计算机语言来写,当然最好用VB ,Delphi,您也可以只提供

计算方法!!!!!!!

谢谢!!!万分感谢!!!!!!
...全文
262 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
光明山人 2000-01-21
  • 打赏
  • 举报
回复
在Delphi中,若TColor类型变量小于零,则为系统颜色,可以用ColorToRGB转换为真实的颜色值。
在TColor的非系统的值中,低24位(共32位,高8位另有它用)为红绿蓝颜色的成分值,红色占最低8位,绿色占次低字节,蓝色占更高一位字节。所以你可以这样统计:

procedure GetColorRatio( Bitmap: TBitmap; var R_Ratio, G_Ratio, B_Ratio: Extended );
var
x, y: Integer;
nR, nG, nB,nTotal: Integer;
aColor: TColor;
begin
with Bitmap do
for y:=0 to Height-1 do
for x:=0 to Width-1 do
begin
aColor := Canvas.Pixels[x,y];
Inc( nR, aColor and $FF );
Inc( nG, (aColor shr 8) and $FF );
Inc( nB, (aColor shr 16) and $FF );
end;
end;
nTotal := nR+nG+nB;
R_Ratio := nR*100.0/nTotal;
G_Ratio := nG*100.0/nTotal;
B_Ratio := nB*100.0/nTotal;
end;

返回时:R_Ratio为红色的百分比,G_Ratio为绿色的百分比,B_Ratio为蓝色的百分比,
Firing_Sky 2000-01-20
  • 打赏
  • 举报
回复
我也觉得只能一点一点的读
sky__horse 2000-01-20
  • 打赏
  • 举报
回复
用 IntToHex(Image1.Canvas.Pixels[x,y],6)可以得到(x,y)点的RGB值
(从000000到FFFFFF),建一个双重循环慢慢地读罢.祝你好运
King 2000-01-20
  • 打赏
  • 举报
回复
好象唯一的方法就是一点一点地读。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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