关于BMP文件的合并(不是叠加)?(100分)

  • 主题发起人 主题发起人 wuyong
  • 开始时间 开始时间
W

wuyong

Unregistered / Unconfirmed
GUEST, unregistred user!
是这样的:两个BMP的大小一样,DPI值一样,要把这两个文件合并成一个文件,中间要有一条间隔线?
 
用BitBlt函数;

Image.Canvas.Draw(0,0,bmp1);
Image.Canvas.Draw(bmp1.width,0,bmp2);
BitBlt(bmp.Canvas.Handle,0,0,bmp.width,bmp.height,Image.Canvas.Handle,0,0,SRCCOPY);

大体就是这样了.
 
var
bmp1,bmp2,bmp3:tbitmap;
begin
bmp1:=tbitmap.create;
bmp2:=tbitmap.create;
bmp3:=tbitmap.create;
bmp1.loadfromfile('1.bmp');
bmp2.loadfromfile('2.bmp');
bmp3.width:=bmp1.widht+bmp2.width+1;
bmp3.canvas.draw(rect(0,0,bmp1.width,bmp1.height),bmp1);
bmp3.cavnas.movoto(bmp1.width+1,0);
bmp3.canvas.lineto(bmp1.width+1,bmp1.height);
bmp3.canvas.draw(rect(bmp1.width+1,0,bmp3.width,bmp3.height),bmp2);
bmp3.savetofile('3.bmp');
bmp1.free;
bmp2.free;
bmp3.free;
end;

以上程序可把1.bmp、2.bmp横向相加成3.bmp
程序是随手写的,可能不能直接编译,基本思路是这样的。
 
不要通过控件的!
 
又考虑过分辨率的问题吗?即,合并后的图像要不失真!
 
bmp3.canvas.draw(rect(0,0,bmp1.width,bmp1.height),bmp1);//不能通过?????
 
我已经知道,但分辨率的问题?即,合并后的图像要不失真!
 
这是图像的色彩,但不能设置图像的DPI!
 
其实你说的并不是图象的合并,而是图象的拼接;
根本不涉及失真的问题。
建议你说的清楚一些或者结束此问题,毕竟你的标题问题已经有了满意的答复。
 
多人接受答案了。
 
后退
顶部