加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 检查两个Tbitmap是否相同的最快方法是什么?

发布时间:2020-12-15 03:51:32 所属栏目:大数据 来源:网络整理
导读:有没有比逐像素检查它们更好的方法? 解决方法 您可以将两个位图保存到TMemoryStream并使用CompareMem进行比较: function IsSameBitmap(Bitmap1,Bitmap2: TBitmap): Boolean;var Stream1,Stream2: TMemoryStream;begin Assert((Bitmap1 nil) and (Bitmap2 n
有没有比逐像素检查它们更好的方法?

解决方法

您可以将两个位图保存到TMemoryStream并使用CompareMem进行比较:
function IsSameBitmap(Bitmap1,Bitmap2: TBitmap): Boolean;
var
 Stream1,Stream2: TMemoryStream;
begin
  Assert((Bitmap1 <> nil) and (Bitmap2 <> nil),'Params can''t be nil');
  Result:= False;
  if (Bitmap1.Height <> Bitmap2.Height) or (Bitmap1.Width <> Bitmap2.Width) then
     Exit;
  Stream1:= TMemoryStream.Create;
  try
    Bitmap1.SaveToStream(Stream1);
    Stream2:= TMemoryStream.Create;
    try
      Bitmap2.SaveToStream(Stream2);
      if Stream1.Size = Stream2.Size Then
        Result:= CompareMem(Stream1.Memory,Stream2.Memory,Stream1.Size);
    finally
      Stream2.Free;
    end;
  finally
    Stream1.Free;
  end;
end;

begin
  if IsSameBitmap(MyImage1.Picture.Bitmap,MyImage2.Picture.Bitmap) then
  begin
    // your code for same bitmap
  end;
end;

我没有对此代码X扫描线进行基准测试,如果您这样做,请告诉我们哪一个是最快的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读