首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >调整PNG图像大小

调整PNG图像大小
EN

Stack Overflow用户
提问于 2010-03-13 16:08:41
回答 5查看 10.7K关注 0票数 6

嗨!您能告诉我如何调整.png图像的大小吗?或者最好举个例子。我已经寻找了很长一段时间,似乎没有人知道如何调整.png图像的大小并保持其透明度。:(

EN

回答 5

Stack Overflow用户

发布于 2010-03-14 02:27:39

PNGImage组件(Delphi原生组件的基础)的原始作者有一个论坛,他和其他人在论坛上发布了关于如何使用PNGImage组件的代码片段。

在论坛被删除之前,我抓取了所有代码片段的副本,并将它们放在CodeGear代码中心网站上。

其中大多数(如果不是全部)都与原生PNG图像一起工作,并维护Alpha通道。

以下是包中包含的示例的完整列表:

  • Smooth旋转png对象
  • 使用平滑的descendant
  • Read将一个png调整为多个较小的块
  • 将图像保存为位图或PNG。将所有文本块descendant
  • Read所有文本块并将值写入PNG
  • 消息框中的
  • Sample TStrings
  • 查找并剪切PNG图像中的块
  • 此方法将PNG转换为jpeg对象
  • 此方法将png转换为bmp
  • onetransparent
  • Flips
  • 这将使图像在垂直方向上半是PNG图像,并保存回来
  • 在桌面

上绘制png图像

这是链接:CodeCentral PNG Methods

票数 22
EN

Stack Overflow用户

发布于 2010-03-14 00:42:55

你可以在Delphi2010中使用Windows Imaging Component。您可以将PNG图像加载到TWICImage类中,然后从其句柄中提取IWICBitmapScaler接口。

使用IWICBitmapScaler,您可以缩小或放大图像。

WIC在Windows Vista和Windows 7上可用。对于Windows XP,您必须先安装更新才能使用它。

票数 3
EN

Stack Overflow用户

发布于 2013-05-16 10:30:29

有一些版本的PngImage (Portable Network Graphics Delphi)允许通过简单的StretchDraw来做这件事。

我有允许这样做的版本- 1.564 (2006年7月31日)

和不允许的版本- 1.4361 (2003年3月8日)

为了执行它,我使用了:

heart.png -透明的,我设法调整了它的大小并保存为透明的。

empty.png -纯透明的png。它被用作空白的一张纸,把我的图像放在上面。

我已经通过这样的代码检查过了:

代码语言:javascript
代码运行次数:0
运行
复制
procedure TForm1.Button1Click(Sender: TObject);
var pic_empty, pic_stamp, pic_result :TPicture;
   r:TRect;
   png : TPNGObject;
begin

  pic_stamp := TPicture.Create;
  pic_stamp.LoadFromFile('c:\heart.png');
  pic_stamp.Graphic.Transparent := True;

  pic_empty := TPicture.Create;
  pic_empty.LoadFromFile('c:\empty.png');
  pic_empty.Graphic.Transparent := True;

  r.Left := 0;
  r.Top := 0;
  r.Right := r.Left + 100;
  r.Bottom := r.Top + 100;

  pic_result := tpicture.Create;
  pic_result.Bitmap.Assign(pic_empty.Graphic);
  pic_result.Graphic.Transparent := True;
  pic_result.Bitmap.Canvas.StretchDraw(r,pic_stamp.Graphic);
  pic_result.Bitmap.Width :=100;
  pic_result.Bitmap.Height:=100;

  png := TPNGObject.Create;
  png.Assign(pic_result.Bitmap);
  png.SaveToFile('c:\result.png');

  png.Free;
  pic_result.Free;
  pic_empty.Free;
  pic_stamp.free;

end;

Delphi-7,win7 x64

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2437714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档