关于图像缩放和伪彩技术 (200分)

  • 主题发起人 主题发起人 arcore
  • 开始时间 开始时间
把图像放大肯定是要失真的。又不是矢量图。
ACDSee和photoshop也要失真呢.
 
那请教一个失真较小的方法吧。请大家帮帮忙。。
 
to linsb:能否发一份ImageSeeSourceCode.zip给我,谢谢!
to arcore:关于缩放和伪彩色,我看过以前卷兄发的一些帖子讲过,你可以查一下,
还有,你的关于图像的亮度、灰度、对比度、保和度的调节的问题的代码能否
发给我,非常感谢!
jinmen888@sina.com.cn,我会用分数感谢各位热心的DFW。
 
缩小:
ImageShow.Width := (ImageShow.Width*4) DIV 5;
ImageShow.Height := (ImageShow.Height*4) DIV 5;
ImageShow.AutoSize:=False;
ImageShow.Stretch := True;
放大自己改吧。不过,也有失真。
 
jinmen:你要的那些东西在FastBmp里面可以找到,我就是用它实现的。
 
to arcore:谢谢!
 
to: arcore
huazai的做法不错,我来不及仔细看代码,有如下建议:
1、图像扩大并不会丢失图形数据,只是为了避免颗粒状出现,采用平滑算法,有线性和非线性的(参考相关书籍)
2、图像缩小一定会丢失图形数据造成图像失真,为了提高图像质量,常常采用矩阵取样,矩阵可以有重叠像素,取样权重有很多种取法。
3、像素运算采用RGB三原色分开运算。
 
在Delphi中,可利用类Tcanvas的CopyRect方法实现图像的放大和缩小。由CopyMode属性确定
拷贝的模式。在直接拷贝模式(CopyRect)下,当源矩形与目的矩形相等时,图像大小不变;
若源矩形大于目的矩形,图像则缩小;而当源矩形小于目的矩形时,图像便被放大。源矩形
与目的矩形大小之比,决定图像缩放倍数。CopyRect方法声明如下:
Procedure CopyRect(const Dest:TRect;Canvas:TCanvas;const Source:TRect);
其中参数,Dest为目的矩形,Canvas是源画布,Source 为源矩形。
不过放大倍数过大或缩小倍数过小时会产生失真。

 
可以用gdi+试试
Image对象有一个方法 GetThumbnailImage 是取得当前图像的缩略图,不过一般用来缩小图像
缩放图像见
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1518098
 
arcore:能否给我发一份FastBmp.tsdxzx@pub.xz.jsinfo.net,谢谢了!
 
要FastBmp的朋友:这个组件你们可以在网上查到的。我现在上网不是很方便,只能在
网吧上,所以也不方便发。你们在Google里面搜索一下,就可以下载到了。
 
to linsb:
可否给我一份,多谢!
pengyi007@tellyes.com
 
可以试试GDI+的缩放,看看能不能打到你的效果。
我个人觉得还可以。
 
To kofxdm:

GDI+我以前没有用过,你可不可以说说在DELPHI下面实现的方法和思路?谢谢。
 

Similar threads

D
回复
0
查看
911
DelphiTeacher的专栏
D
D
回复
0
查看
868
DelphiTeacher的专栏
D
D
回复
0
查看
840
DelphiTeacher的专栏
D
I
回复
0
查看
612
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部