如何缩小image中的图不失真,象photoshop一样?(100分)

  • 主题发起人 主题发起人 玩命
  • 开始时间 开始时间

玩命

Unregistered / Unconfirmed
GUEST, unregistred user!
我用以下方法,比photoshop差很多,处理人像没问题,但处理车辆号牌就不行了。
image1.Picture.Graphic.Width:=strtoint(edit5.text);
image1.Picture.Graphic.Height:=strtoint(edit6.text);
SetStretchBltMode(image1.Canvas.Handle,HalfTone);
StretchBlt(Image1.Canvas.Handle,0,0,strtoint(edit5.text),strtoint(edit6.text),Image3.Canvas.Handle,0,0,Image3.Picture.Graphic.Width,Image3.Picture.Graphic.Height,SRCCOPY);
 
BitBlt的算法是取平均象素值的,
而这对于有清晰边界的图形就不好了。
我们可以自己写算法,只要固定的取一点就可以了:
NewPixels[x,y]:=OldPixels[Trunc(OldWidth/NewWidth*x),Trunc(OldWidth/NewWidth*x)];

 
不好意思,我水平差。能不能把代码写出来:
form上有image1,image3,
把image3中的位图缩小并放到image1中。怎样写?
 
将image3中图形的每个像素点通过相邻混合运算的方法实现,
然后再将运算后的图形加如image1中,
你需要了解图形的存储格式及相关算法。。。
 
我从未接触过图形处理,急用!!!
哪个老兄写个代码????
 
SetStretchBltMode(Canvas.Handle,STRETCH_HALFTONE); 即可
详细情况参考API说明

 
TK128,不行,我试过的方法(包括你的),视觉上比PHOTOSHOP好,但打印出来效果差!
如果用photoshop缩小后打印,就强多了
 
有关打印的问题我很疑惑
就是使用printer打印image的图象的时候,使用普通打印和使用照片质量打印的大小不一样
请问如何解决这个问题?>
 
花无泪:

  呵呵,老凶,怎么在我的地盘卖膏药?

--玩笑。
这个问题我也在研究,为什么在PHOTO中打印很好,我用report machine打印就差大了。
根本不清。
 
该程序用于车管所打印驾驶员和车辆。图像缩小后的效果不如photoshop,哪位老兄如能
改进,请发给我一份:
lsqfather@yahoo.com.cn
程序用report machine打印,考虑到有的网友没有该控件,所以删除了报表部分。
以下是源吗:
http://www.playicq.com/dispdocnew.php?t=27&id=3701
 
打印的部分发给你了
 
huazai:
没收到,我缺的不是打印部分,而是缩小失真问题解决方法。
 
收到了!!! 不错,虽然我还没打印,不过对程序很感光兴趣!!!!
发源码给我吧!100分给你了!
 
呵呵,原来只是发了打印部分。。。。
全部的不行吗?
打印不清的原因找到了,是像素不够。。。
 
小伙子,打印的部分已经够你受用的了
 
呵呵,虽然打印问题是我自己解决,我提的问题没人正面加答,可分还是要分给你们的,
尤其是huazai,我缺的不是打印源码,而是处理源码。

 
我没有解决办法,不过估计是跟图片放缩时采用的采样算法有关……
 
to huazai,
发给我吧,我想要这方面的代码
如果使用了控件请将控件一同发送,谢谢。
 
对了信箱是xiaorou00@sina.com
 
后退
顶部