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

前端之家收集整理的这篇文章主要介绍了delphi – 检查两个Tbitmap是否相同的最快方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有比逐像素检查它们更好的方法

解决方法

您可以将两个位图保存到TMemoryStream并使用CompareMem进行比较:
  1. function IsSameBitmap(Bitmap1,Bitmap2: TBitmap): Boolean;
  2. var
  3. Stream1,Stream2: TMemoryStream;
  4. begin
  5. Assert((Bitmap1 <> nil) and (Bitmap2 <> nil),'Params can''t be nil');
  6. Result:= False;
  7. if (Bitmap1.Height <> Bitmap2.Height) or (Bitmap1.Width <> Bitmap2.Width) then
  8. Exit;
  9. Stream1:= TMemoryStream.Create;
  10. try
  11. Bitmap1.SaveToStream(Stream1);
  12. Stream2:= TMemoryStream.Create;
  13. try
  14. Bitmap2.SaveToStream(Stream2);
  15. if Stream1.Size = Stream2.Size Then
  16. Result:= CompareMem(Stream1.Memory,Stream2.Memory,Stream1.Size);
  17. finally
  18. Stream2.Free;
  19. end;
  20. finally
  21. Stream1.Free;
  22. end;
  23. end;
  24.  
  25. begin
  26. if IsSameBitmap(MyImage1.Picture.Bitmap,MyImage2.Picture.Bitmap) then
  27. begin
  28. // your code for same bitmap
  29. end;
  30. end;

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

猜你在找的Delphi相关文章