3个回答
展开全部
假设目标:把Image1中的图像长宽都缩小到一半后,放入Image2中
方法#1:用Image.Stretch属性
Image2.Stretch := True;
Image2.Width := Image1.Width div 2;
Image2.Height := Image1.Width div 2;
Image2.Picture.Assign( Image1.Picture );
方法#2:调用Windows API——StretchBlt
Image2.Width := Image1.Width div 2;
Image2.Height := Image1.Width div 2;
StretchBlt(
Image2.Canvas.Handle,
0, 0, Image2.Width, Image2.Height,
Image1.Canvas.Handle,
0, 0, Image1.Width, Image1.Height,
SRCCOPY
);
如果需要将改变后的图像另存,则直接用Image2.Picture.SaveToFile即可。
点评:方法一简单,方法二功能强,可以准确定位要把原始图像放到目标图像的什么位置,而不是固定的从左上角到右下角之间的矩形,还可以由最后一个参数制定绘制方法,各种方法分别是什么功能,可查阅MSDN。
方法#1:用Image.Stretch属性
Image2.Stretch := True;
Image2.Width := Image1.Width div 2;
Image2.Height := Image1.Width div 2;
Image2.Picture.Assign( Image1.Picture );
方法#2:调用Windows API——StretchBlt
Image2.Width := Image1.Width div 2;
Image2.Height := Image1.Width div 2;
StretchBlt(
Image2.Canvas.Handle,
0, 0, Image2.Width, Image2.Height,
Image1.Canvas.Handle,
0, 0, Image1.Width, Image1.Height,
SRCCOPY
);
如果需要将改变后的图像另存,则直接用Image2.Picture.SaveToFile即可。
点评:方法一简单,方法二功能强,可以准确定位要把原始图像放到目标图像的什么位置,而不是固定的从左上角到右下角之间的矩形,还可以由最后一个参数制定绘制方法,各种方法分别是什么功能,可查阅MSDN。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我提供一个改变图大小保存文件的代码 希望对你有用
procedure TForm1.SaveBmp(const SPath, Dpath: string; width, Higth: Word);
var
sBmp, sBmp1: TBitmap;
srcRect, desRect: TRectF;
begin
if FileExists(SPath) then
begin
sBmp := TBitmap.CreateFromFile(SPath);
srcRect := tRectf.Create(0,0, sBmp.Width, sBmp.Height);
sBmp1 := TBitmap.Create(width, Higth);
desRect := Trectf.Create(0,0,width, Higth);
try
sBmp1.Canvas.BeginScene;
sBmp1.Canvas.DrawBitmap(sBmp,srcRect, desRect,100);
sBmp1.Canvas.EndScene;
sBmp1.SaveToFile(Dpath);
finally
sBmp.Free;
sBmp1.Free;
end;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
SaveBmp('c:\019.jpg', 'c:\020.jpg', 800,600);
end;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有固定格式,只要能够表达意思即可.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |