>> 关于TPngObject 进行png图片缩放的问题(200分)

  • 主题发起人 主题发起人 rwlin
  • 开始时间 开始时间
R

rwlin

Unregistered / Unconfirmed
GUEST, unregistred user!
关于TPngObject 进行png图片缩放的问题;

发现用PngImagge来显示png是没有问题,但是做png图片缩放是不行的,网络上我能找到的最新的版本是1.564,虽然作者添加了resize 的功能,但是有bug,也就是一个png图像resize并不会按照比例进行缩放,而是从坐标0,0开始截取,这显然不是我们想要的;

我采用了bitmap 进行中转,如
procedure PNGFileToBitmap(const Source, Dest: String);
var
Bitmap: TBitmap;
PNG: TPNGObject;
begin
PNG := TPNGObject.Create;
Bitmap := TBitmap.Create;
{In case something goes wrong, free booth PNG and Bitmap}
try
PNG.LoadFromFile(Source);
Bitmap.Assign(PNG); //Convert data into bitmap
Bitmap.SaveToFile(Dest);
finally
PNG.Free;
Bitmap.Free;
end
end;

然后将bitmap进行resize,再将缩放后的bitmap转回png ,从而达到png缩放的目的,结果出来了,但是png特有的alpha通道转没了。。所以看上去半透效果就没了,有时候甚至还有锯齿;

但是我们用ps或者iw进行png缩放的效果很好啊,而且保留了原来的alpha通道;


研究了半天,没研究出来,各位有什么好建议??这不是一个简单的问题哦。[:D]
 
并不麻烦,直接找gdiplus的包。
调用gdi+的方法,你会发现真的非常容易。
 
真的吗?我得瞧瞧去,啊哈

有其他方法吗,哈哈,大家多想想嘛,
 
这两天在研究gdi plus,确实功能强大,呵呵

看看大家有没有其他方法,没有我就结贴了哈
 
png控件确实没有缩放的功能,试试这个控件行不,我没用过,据说可以做半透明的效果
http://www.graphics32.org/wiki/
 
呵呵。。有空试一试,

我也已经用gdi+实现了,gdi+ 也不用管是什么图像格式,哈哈
 
好啦,不多说啦,,结贴散分了
还得靠自己,哈哈哈。。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部