易学之家,八字,六爻,风水,奇门遁甲,六壬,金口诀,周易,阳宅风水,风水堪舆,张锋,风水罗盘指南针

[GDI+]如何制作出高质量的缩略图

如何制作出高质量的缩略图是个关键的因素,最近项目中遇到了类似需要解决的问题。
一般情况下,我们制作成的缩略图都会保存为占用空间比较小的Jpeg类型,在使用GetThumbnail方法制作成的缩略图质量感觉不理想,
如何才能保证在压缩比例最优化的情况下产生高质量的缩略图呢,经过查阅相关资料,
发现在Graphics 对象的 InterpolationMode 属性中可以产生不同质量模式的缩放图,看到这里了,不再是缩略图,而是缩放图,就是说放大的时候也可以使用。
Graphics 对象的 InterpolationMode 属性枚举定义了几种模式,列表如下:
NearestNeighbor
Bilinear
HighQualityBilinear
Bicubic
HighQualityBicubic
从名字上就可以识别NearestNeighbor 是质量最差的模式,HighQualityBicubic 是质量最好的模式了,我们借此属性看看生成的图片怎么样吧,下段代码摘自网络,大家可以把下面的函数拿去使用,这里采用了HighQualityBilinear 。

代码引用地址:http://www.bobpowell.net/highqualitythumb.htm
    Public Function GenerateThumbnail(original As Image, percentage As IntegerAs Image

     
If percentage < 1 Then

      
Throw New Exception("Thumbnail size must be aat least 1% of the original size")

     
End If

     
Dim tn As New Bitmap(CInt(original.Width * 0.01F * percentage), _

                          
CInt(original.Height * 0.01F * percentage))

     
Dim g As Graphics = Graphics.FromImage(tn)

     g.InterpolationMode 
= InterpolationMode.HighQualityBilinear 

     g.DrawImage(original, 
New Rectangle(00, tn.Width, tn.Height), _

                 
00, original.Width, original.Height, GraphicsUnit.Pixel)

     g.Dispose()

     
Return CType(tn, Image)

    
End Function
 

posted on 2005-01-26 16:46  张锋  阅读(4806)  评论(9编辑  收藏  举报

易学之家,八字,六爻,风水,奇门遁甲,六壬,金口诀,周易,阳宅风水,风水堪舆,张锋,风水罗盘指南针