bmp.Assign((FL_img as TImage).Picture.Bitmap);
bmp.PixelFormat:=pf24bit;
p:=bmp.ScanLine[0];
if (bmp.Height>1) then
begin
ScanlineBytes:=integer(bmp.ScanLine[1])-integer(bmp.ScanLine[0]);
end
else
ScanlineBytes:=0;
for y:=0 to bmp.Height-1 do
begin
for x:=0 to bmp.Width-1 do
begin
RVALUE:=p[x].rgbtRed;
gVALUE:=p[x].rgbtGreen;
bVALUE:=p[x].rgbtBlue;
RGBtoHSL(RVALUE,gVALUE,bVALUE,hVALUE,sVALUE,lVALUE);
HVALUE:=HVALUE+240;
HVALUE:=Min(240,HVALUE);
HSLtorgb(hVALUE,sVALUE,lVALUE,rVALUE,gVALUE,bVALUE);
p[x].rgbtRed:=RVALUE;
p[x].rgbtGreen:=gVALUE;
p[x].rgbtBlue:=bVALUE;
end;
if (bmp.Width>1)or(bmp.Height>1) then
inc(integer(p),ScanlineBytes);
end;
(FL_img as TImage).Picture.Bitmap.Assign(bmp);
上面这个是处理图像的一个过程!!!
我想不处理像素点为clred 也就红色!!!不处理红色..
其它色都处理..
怎么排除呢?
解决方案 »
- RemObjects 如何查询oracle中带long类型的表???(分不够再加)
- 能不是把report machine Demo发给我
- 动态添加事件问题?
- 如何讓Tmemo總是顯示第一行,我用add加入很多行,完成后focus總在最后一行,我想讓他回到第一行.請幫忙
- 用安装盘制作程序Installshield 4.0遇到的问题?急求赐教!
- 如何在Delphi里面用程序自动生成TADOConnection连接字符串?
- 一个基于FORM的程序,如何在某个Form里实现MDI
- 如何实现在运行期间,对控件大小进行拖放和调整?
- 怎么在程序中调用chm的帮助?
- 数据更新出现错误,怎么办?
- dephi中sql查询语句如何写
- 想做一个中小超市的管理软件后问题多多
gVALUE:=p[x].rgbtGreen;
bVALUE:=p[x].rgbtBlue;你都已经把三个颜色的值去除了,只要判断这三个值是否为红色即可,红色绿和蓝颜色为0,红色为255if 是红色 then
continue;
if p[x].rgbtred<>255 or p[x].rgbtGreen<>0 or p[x].rgbtBlue<>0 then
begin
....
end;是这样么?
const
CIRed = $0000FF; { 记不清Red到底是低位还是高位了,如果在高位应该是 $ff0000 }
...
if( (PInteger(@p[x])^ and $00ffffff)=CIRed )then
continue;另外,印象中dib是底部的line在先,而ScanLine正好是反过来的,也就是说,ScanLine[0]其实是最后一行,你的ScanlineBytes应该是个负数,如果别的地方还要用它的话得小心了……