如何才能让jpeg的缩略图变清晰???急! ( 积分: 50 )

  • 主题发起人 主题发起人 336764
  • 开始时间 开始时间
3

336764

Unregistered / Unconfirmed
GUEST, unregistred user!
图片原图大小有1280 x 800,我想等比或非等比缩小到300左右宽的缩略图。

我在网上找到的缩略图方法,但是制作出来的都不清晰,图片上有1px的曲线。

但是在windows下,直接把图变小,就很清晰,请问用delphi怎么能缩小成和windows下一样效果的图片??????

谢谢 。。
 
试试我找到的方法(先将JPEG转换成BMP,然后再缩小):
http://www.delphibbs.com/keylife/iblog_show.asp?xid=23536
 
还是不行。。。。效果有所提高,但是和windwos下的效果比,差远了。,而且看不清楚曲线内容
 
需要平滑缩小
 
.....一般图像缩小都用 SetStretchBltMode(dbmp.Canvas.Handle, HALFTONE);
不过这个效果和windows缩略图还是有点区别,似乎缩略图更模糊、平滑一些
var
jpg:tjpegimage;
sbmp,dbmp:Tbitmap;
begin
jpg:=tjpegimage.Create;
jpg.LoadFromFile('D:/test.jpg');
Jpg.DIBNeeded;
image1.Picture.LoadFromFile('D:/test.jpg');
sbmp:=Tbitmap.Create;
sbmp.Assign(jpg);
dbmp:=Tbitmap.Create;
dbmp.PixelFormat:=pf32bit;
dbmp.Width:=133;
dbmp.Height:=round(133*sbmp.Height/sbmp.Width);
SetStretchBltMode(dbmp.Canvas.Handle, HALFTONE);
stretchBlt(dbmp.Canvas.Handle,0,0,dbmp.Width,dbmp.Height,sbmp.Canvas.Handle, 0, 0,sbmp.Width,sbmp.Height, SRCCOPY);
image2.Picture.Assign(dbmp);
sbmp.Free;
dbmp.Free;
end;


我个人感觉windows的缩略图好像是用DirectDraw来做的,符合DirectX一般的视觉效果感觉
 
不过对于楼主说的1280*800分辨率 1px宽度的曲线图,我上面的方法缩放到133*100(和windows缩略图一样大小)仍然能够看清曲线
楼主不妨试试
 
效果比DirectDraw的要好多了,非常清晰。谢谢 。。
 
后退
顶部