图片 无锯齿放大(100分)

  • 主题发起人 主题发起人 nicchen
  • 开始时间 开始时间
N

nicchen

Unregistered / Unconfirmed
GUEST, unregistred user!
各位富翁们好:

请教一下大家 有没有办法 使图片平滑无锯齿放大 比且带有一点逐渐放大的效果

比如1张图片尺寸为800×600 一开始显示的时候是800×600 点击图片变成400×300(或者200×150尺寸比例随意) 再点击一次图片恢复800×600 并且在放大和缩小的时候稍微带一点逐渐放大的效果 不知道 DELPHI 能不能实现

希望大家多多帮忙 谢谢大家了。。。
 
先转换成矢量图就OK了
 
能不能说的详细一点

比如放大缩小的代码是怎么样的 还要逐渐放大逐渐缩小的效果代码是怎么样的
 
凌霄图像批处理专家是一款图片批处理工具,它集批量图片格式转换、批量图片修改处理、批量重命名、批量调整尺寸、批量晒图导出、创建EXE文件、创建PDF文件于一体的图片批处理系统。凌霄图像批处理专家提供将近30种图片修改处理脚本命令(如调整亮度等)供您任意组合使用!她还可以让您轻松的将任意多的图像(图片)文件生成一个EXE或PDF文件,并提供多达150种的显示效果,方便您欣赏自己的图片,并轻易实现与家人、朋友分享!她支持多达11种(BMP, JPG,PNG, EXIF, GIF, WMF,ICO, TGA, PCX,TIFF, PPM )的基本图片格式输出。如果加上与他们等价的格式,则支持的打开图片类型超过30种。而且所有这些功能,您都可以在Windows资源管理器中通过右键菜单轻松使用。
下载地址:www.flyingspace.com
 
使用一些算法阿比如bell,spline,hermite等,不过比较慢
 
网上找的bmp锯齿消除的办法,还是老说法,先转bmp,高质量压回去

Procedure AntiAliasRect(clip: tbitmap; XOrigin, YOrigin,
XFinal, YFinal: Integer);
Var Memo, x, y: Integer; (* Composantes primaires des points environnants *)
p0, p1, p2: pbytearray;

Begin
If XFinal < XOrigin Then Begin Memo := XOrigin; XOrigin := XFinal; XFinal := Memo; End; (* Inversion des valeurs *)
If YFinal < YOrigin Then Begin Memo := YOrigin; YOrigin := YFinal; YFinal := Memo; End; (* si diff俽ence n俫ative*)
XOrigin := max(1, XOrigin);
YOrigin := max(1, YOrigin);
XFinal := min(clip.width - 2, XFinal);
YFinal := min(clip.height - 2, YFinal);
clip.PixelFormat := pf24bit;
For y := YOrigin To YFinal Do Begin
p0 := clip.ScanLine[y - 1];
p1 := clip.scanline[y];
p2 := clip.ScanLine[y + 1];
For x := XOrigin To XFinal Do Begin
p1[x * 3] := (p0[x * 3] + p2[x * 3] + p1[(x - 1) * 3] + p1[(x + 1) * 3]) Div 4;
p1[x * 3 + 1] := (p0[x * 3 + 1] + p2[x * 3 + 1] + p1[(x - 1) * 3 + 1] + p1[(x + 1) * 3 + 1]) Div 4;
p1[x * 3 + 2] := (p0[x * 3 + 2] + p2[x * 3 + 2] + p1[(x - 1) * 3 + 2] + p1[(x + 1) * 3 + 2]) Div 4;
End;
End;
End;
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部