delphi比较两个位图是否相同

2018-10-30


引用
function IsBmpSame(bmp1,bmp2: TBitmap): Boolean;  
var 
  i,j: Integer;  
  ScanLine1,ScanLine2: PByteArray;  
  Count: Integer;  
begin 
  Result := (bmp1.Height = bmp2.Height) and 
   (bmp1.Width = bmp2.Width) and 
   (bmp1.PixelFormat = bmp2.PixelFormat);  
  if Result then 
  begin 
   i := Integer(bmp1.PixelFormat);  
   if i < 4 then 
   i := 4 
   else if i = 4 then 
   inc(i);  
   Count := (i - 3) * bmp1.Width - 1;  
   for i:=0 to bmp1.Height-1 do 
   begin 
   ScanLine1 := bmp1.ScanLine[i];  
   ScanLine2 := bmp2.ScanLine[i];  
   for j := 0 to Count do 
   if ScanLine1[j] <> ScanLine2[j] then 
   begin 
   Result := False;  
   Exit;  
   end;  
   end;  
  end;  
end; 


阅读17