du kannst die bilder in tbitmap lesen und pixel per pixel die Farbkanäle mischen.
kleines Beispiel:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
type
TRGBArray = array[0..32767] of TRGBTriple;
PRGBArray = ^TRGBArray;
var
x, y: Integer;
RowA,RowB: PRGBArray;
bmp1,bmp2 : tbitmap;
begin
bmp1 := image2.Picture.Bitmap;
bmp2 := image3.Picture.Bitmap;
try
bmp1.PixelFormat := pf24bit;
for y := 0 to bmp1.Height -1 do
begin
rowA := bmp1.ScanLine[y];
rowB := bmp2.ScanLine[y];
for x := 0 to bmp1.Width - 1 do
begin
rowA[x].rgbtRed := (rowA[x].rgbtRed + rowB[x].rgbtRed) div 2;
rowA[x].rgbtGreen := (rowA[x].rgbtGreen + rowB[x].rgbtGreen) div 2;
rowA[x].rgbtBlue := (rowA[x].rgbtBlue + rowB[x].rgbtBlue) div 2;
end;
end;
finally
image1.Picture.Bitmap := bmp1;
end;
P.S. : vergiss nicht dass es bloß ein beispiel ist. Anpassungen und SchnickSchnack wie skalieren und prozentuales Mischen habe ich nicht reingebaut. Das zweite Bild wird jedes mal OnClick um 50 % mit dem ersten gemischt.