如何制作出高质量的缩略图是个关键的因素,最近项目中遇到了类似需要解决的问题。
一般情况下,我们制作成的缩略图都会保存为占用空间比较小的Jpeg类型,在使用GetThumbnail方法制作成的缩略图质量感觉不理想,
如何才能保证在压缩比例最优化的情况下产生高质量的缩略图呢,经过查阅相关资料,
发现在Graphics 对象的 InterpolationMode 属性中可以产生不同质量模式的缩放图,看到这里了,不再是缩略图,而是缩放图,就是说放大的时候也可以使用。
Graphics 对象的 InterpolationMode 属性枚举定义了几种模式,列表如下:
NearestNeighbor
Bilinear
HighQualityBilinear
Bicubic
HighQualityBicubic
从名字上就可以识别NearestNeighbor 是质量最差的模式,HighQualityBicubic 是质量最好的模式了,我们借此属性看看生成的图片怎么样吧,下段代码摘自网络,大家可以把下面的函数拿去使用,这里采用了HighQualityBilinear 。
代码引用地址:http://www.bobpowell.net/highqualitythumb.htm
一般情况下,我们制作成的缩略图都会保存为占用空间比较小的Jpeg类型,在使用GetThumbnail方法制作成的缩略图质量感觉不理想,
如何才能保证在压缩比例最优化的情况下产生高质量的缩略图呢,经过查阅相关资料,
发现在Graphics 对象的 InterpolationMode 属性中可以产生不同质量模式的缩放图,看到这里了,不再是缩略图,而是缩放图,就是说放大的时候也可以使用。
Graphics 对象的 InterpolationMode 属性枚举定义了几种模式,列表如下:
NearestNeighbor
Bilinear
HighQualityBilinear
Bicubic
HighQualityBicubic
从名字上就可以识别NearestNeighbor 是质量最差的模式,HighQualityBicubic 是质量最好的模式了,我们借此属性看看生成的图片怎么样吧,下段代码摘自网络,大家可以把下面的函数拿去使用,这里采用了HighQualityBilinear 。
代码引用地址:http://www.bobpowell.net/highqualitythumb.htm
Public Function GenerateThumbnail()Function GenerateThumbnail(original As Image, percentage As Integer) As 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(0, 0, tn.Width, tn.Height), _
0, 0, original.Width, original.Height, GraphicsUnit.Pixel)
g.Dispose()
Return CType(tn, Image)
End Function
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(0, 0, tn.Width, tn.Height), _
0, 0, original.Width, original.Height, GraphicsUnit.Pixel)
g.Dispose()
Return CType(tn, Image)
End Function
来源:https://www.cnblogs.com/hbzxf/archive/2005/01/26/97697.html