怎么样将一个图片中一某部分复制到另一图片并另存? 本帖最后由 mustmust 于 2012-04-05 23:20:31 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 copyrect 可以,自己看看怎么用吧http://blog.csdn.net/jinshaopu/article/details/6451413 //合成照片(实现两张图左右合并)----------------------------------------------------------------------function TDM.ComposeImage(Image_A, Image_B: string): Boolean;var Img_A, Img_B, Img_C, Img_Temp: TJPEGImage; bmp_t, bmp: TBitmap; TempPath:string;begin Result := false; try Img_A := TJPEGImage.Create; Img_B := TJPEGImage.Create; //最终合成的图片 Img_C := TJPEGImage.Create; //临时存存储 Img_Temp := TJPEGImage.Create; try //加载第一张图片 Img_A.LoadFromFile(Image_A); //加载第二张图片 Img_B.LoadFromFile(Image_B); bmp := TBitmap.Create; bmp_t := TBitmap.Create; try //合成后图片的宽度,如果不变此处可以不需要 bmp.Width := Img_A.Width + Img_B.Width //合成后图片的高度,如果不变此处可以不需要 bmp.Height := Img_A.Height; //把第一张图加载到临时画布中 bmp_t.Assign(Img_A); //画第一张图(从Left=0,top=0的地方开始画) bmp.Canvas.Draw(0, 0, bmp_t); //把第二张图加载到临时画布中 bmp_t.Assign(Img_B); //AV5直接拼接B图(从Left =Img_A.Width,top-0的地方开始拼接第二张图) bmp.Canvas.Draw(Img_A.Width, 0, Img_B); //拼接后的图片存储 Img_Temp.Assign(bmp); TempPath := 'C:\1.jpg'; Img_Temp.SaveToFile(TempPath); //删除原有文件 DeleteFile(PChar(Image_A)); DeleteFile(PChar(Image_B)); Result := true; finally bmp.Free; bmp_t.Free; end; finally Img_A.Free; Img_B.Free; Img_C.Free; Img_Temp.Free; end; except end;end; 就用CopyRect给你写个简单的,如果是jpg格式实现方法类似下面是将图片2中某个区域,复制到图片1中对应的区域(区域大小,复制的位置可以自己调),合并后保存procedure TForm1.BitBtn1Click(Sender: TObject);var bmp:Tbitmap; Rt:TRect;begin bmp:=Tbitmap.Create; {创建1个位图} try Rt:=Rect(0,0,100,100); {要复制的区域} image1.Canvas.CopyRect(Rt,image2.Canvas,Rt); {界面上效果} bmp.Width:=image1.Picture.Width; {设置宽高与图片1相等} bmp.Height:=image1.Picture.Height; bmp.Canvas.CopyRect(Rect(0,0,bmp.Width,bmp.Height),image1.Canvas,Rect(0,0,image1.Picture.Width,image1.Picture.Height)); {完整复制图片1} bmp.Canvas.CopyRect(Rt,image2.Canvas,Rt); {复制图片2的Rt区域} bmp.SaveToFile('d:\1.bmp'); finally bmp.Free; end;end; sql语句问题:查询两个字段只要一个字段不为空的记录。 如何调用 chm 文件 ????????? 完全免费-CSDN Direct精简版,看贴飞快,保存帖子为HTML页面,程序内嵌回复,自动登陆…… 在delphi中button中如何实现文本换行? 上网记录让在注册表的哪个主键下面?参与就有分 怎么让toolbar增加按钮时从右到左增加,而不时默认的从左到右? 如何用修改注册表的方法修改系统的日期格式 求教 新手问题~~~ ODBC数据源中的Access驱动没了,怎么办??? 小问题,大问题 求图像的自动对比度或自动色阶算法, 求助一个简单的存储过程
http://blog.csdn.net/jinshaopu/article/details/6451413
function TDM.ComposeImage(Image_A, Image_B: string): Boolean;
var
Img_A, Img_B, Img_C, Img_Temp: TJPEGImage;
bmp_t, bmp: TBitmap;
TempPath:string;
begin
Result := false;
try
Img_A := TJPEGImage.Create;
Img_B := TJPEGImage.Create;
//最终合成的图片
Img_C := TJPEGImage.Create;
//临时存存储
Img_Temp := TJPEGImage.Create;
try
//加载第一张图片
Img_A.LoadFromFile(Image_A);
//加载第二张图片
Img_B.LoadFromFile(Image_B);
bmp := TBitmap.Create;
bmp_t := TBitmap.Create;
try
//合成后图片的宽度,如果不变此处可以不需要
bmp.Width := Img_A.Width + Img_B.Width
//合成后图片的高度,如果不变此处可以不需要
bmp.Height := Img_A.Height;
//把第一张图加载到临时画布中
bmp_t.Assign(Img_A);
//画第一张图(从Left=0,top=0的地方开始画)
bmp.Canvas.Draw(0, 0, bmp_t);
//把第二张图加载到临时画布中
bmp_t.Assign(Img_B);
//AV5直接拼接B图(从Left =Img_A.Width,top-0的地方开始拼接第二张图)
bmp.Canvas.Draw(Img_A.Width, 0, Img_B);
//拼接后的图片存储
Img_Temp.Assign(bmp);
TempPath := 'C:\1.jpg';
Img_Temp.SaveToFile(TempPath);
//删除原有文件
DeleteFile(PChar(Image_A));
DeleteFile(PChar(Image_B));
Result := true;
finally
bmp.Free;
bmp_t.Free;
end;
finally
Img_A.Free;
Img_B.Free;
Img_C.Free;
Img_Temp.Free;
end;
except
end;
end;
下面是将图片2中某个区域,复制到图片1中对应的区域(区域大小,复制的位置可以自己调),合并后保存procedure TForm1.BitBtn1Click(Sender: TObject);
var
bmp:Tbitmap;
Rt:TRect;
begin
bmp:=Tbitmap.Create; {创建1个位图}
try
Rt:=Rect(0,0,100,100); {要复制的区域}
image1.Canvas.CopyRect(Rt,image2.Canvas,Rt); {界面上效果} bmp.Width:=image1.Picture.Width; {设置宽高与图片1相等}
bmp.Height:=image1.Picture.Height;
bmp.Canvas.CopyRect(Rect(0,0,bmp.Width,bmp.Height),image1.Canvas,Rect(0,0,image1.Picture.Width,image1.Picture.Height)); {完整复制图片1}
bmp.Canvas.CopyRect(Rt,image2.Canvas,Rt); {复制图片2的Rt区域}
bmp.SaveToFile('d:\1.bmp');
finally
bmp.Free;
end;
end;