两幅图像如何进行异或操作??(100分)

  • 主题发起人 主题发起人 老赵
  • 开始时间 开始时间

老赵

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。最好有代码。
 
代码我没有时间写,但我的方法一定能实现,那就是用BitBlt函数,仔细看一下这个函数的
使用方法吧!
 
我写个简单的
用ScanLine,这必须是24bit的。你可以先转化成。
如果两个图不是一样大的,你自己要判断

for J:=0 to Bmp.Height - 1 do
begin
P1 := Bmp.ScanLine[J];
P2 := Bmp1.ScanLine[J];
for I:=0 to Bmp.Width - 1 do
begin
P1[3*I] := P1[3*I] Xor P2[3*I];
P1[3*I+1] := P1[3*I+1] Xor P2[3*I+1];
P1[3*I+2] := P1[3*I+2] Xor P2[3*I+2];
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp1,Bmp2 :TBitmap;
begin
Bmp1 :=TBitmap.Create;
Bmp1.LoadFromFile('e:/图片/end004.bmp');
Bmp2 :=TBitmap.Create;
Bmp2.LoadFromFile('e:/图片/yunwen3.bmp');
BitBlt(Bmp2.Canvas.Handle,0,0,Bmp2.Width,Bmp2.Height,Bmp1.Canvas.Handle,0,0,SRCINVERT);
Image1.Picture.Bitmap.Assign(Bmp2);
Bmp1.Free;
Bmp2.Free;
end;
 
多人接受答案了。
 
后退
顶部