如何在delphi 中程序 改变图像的尺寸如正比缩小,有控件或功能吗?

需要能够保存成新尺寸的图像文件。... 需要能够保存成新尺寸的图像文件。 展开
 我来答
己闻楣Sx
2010-11-24 · TA获得超过1935个赞
知道大有可为答主
回答量:1057
采纳率:93%
帮助的人:903万
展开全部
假设目标:把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。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pykill8
推荐于2018-03-26 · 超过85用户采纳过TA的回答
知道小有建树答主
回答量:312
采纳率:100%
帮助的人:54.1万
展开全部

我提供一个改变图大小保存文件的代码   希望对你有用

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;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bvagu42
2010-11-25 · TA获得超过2691个赞
知道小有建树答主
回答量:2061
采纳率:0%
帮助的人:1314万
展开全部
没有固定格式,只要能够表达意思即可.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式