如题,请高手帮帮忙。
解决方案 »
- cxGrid导出EXCEL的内容不是onGetText后内容,还是数据库的原值?
- 这一种界面是怎么做出来的?
- 关于rave中横向打印的问题?
- 如何用delphi 设计学生分班程序
- 急:FastReport 2.47中,不能将TfrRichView改为透时背景(将其FillColor属性改为clTransparent不起作用)。
- 动态调用动态链接库
- 我在访问 listbox 时。总是很容易出现& List index out of bounds(7或8或9....) 的错误。。请问如处解决呢??
- 高分招聘解决问题高手
- 请问在Oracle中如何定义Bool类型的字段?
- smeidll.dll在delphi下的调用疑问,急!
- 求助,用rave制作多表报表
- DBLOOKUPCOMBOBOX 如果我点击过,上面永远有值了,如何去掉这个值?谢谢大虾,一定给分,虽然分数少!偶新手分不多
var
Green, Blue ,Red :byte;
i: integer;
begin
if Image1.Canvas.Pixels[0,0] = clWhite then
ShowMessage('白');
//取各个颜色值
i := image1.Canvas.Pixels[0,0];
Blue := GetBValue(i);
Green := GetGValue(i);
Red := GetRValue(i);end;procedure TForm1.Button2Click(Sender: TObject);
var
i, j:integer;
begin
for i:= 0 to Image1.Width do
for j:= 0 to Image1.Height do
begin
if Image1.Canvas.Pixels[i,j] <> clWhite then
begin
ShowMessage('含有非白色');
Exit;
end;
end;
end;
function BmpIsWhile(bmp: TbitMap): boolean;
type
PRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray = array[0..32767] of TRGBTriple;
var
x, y: integer;
p0: PRGBTripleArray;
sBmp, dBmp: TBitMap;
begin
Result := False;
Bmp.PixelFormat := pf24bit;
for y := 0 to Bmp.Height - 1 do
begin
p0 := Bmp.ScanLine[y];
for x := 0 to Bmp.Width - 1 do
if (p0[x].rgbtBlue = 255) and
(p0[x].rgbtGreen = 255) and
(p0[x].rgbtRed = 255) then
begin
Result := True;
end
else
begin
Result := False;
Exit;
end;
end;
end; if BmpIsWhile(Image1.Picture.Bitmap) then
showmessage('图片是白色');
毛哟,
图像的显示最后都要转成RGB对应的
如果觉得用ScanLine慢了
你可以开几个线程一起判断三
但是还是得每个象素都读一遍可以试试用散列的方式,
ScanLine读取一行以后,用一定的算法得出每一行的校验码
然后拿校验码来进行比较
不过,一点一点地从显存读数据确是很慢的,应该用Scanline来整行整行读数据,
如要更快,可把整个图像由文件直接读到内存,再来查每一行每一个像素.