提高ASP.NET生成缩略图质量

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

ASP.NET生成缩略图失真非常厉害,如果图像原文件为JPG格式的,可以通过以下程序优化!!!如果是其它格式的图片可以在上传时候保存为JPG格式的,详情情参见 http://blog.csdn.net/rheleven/archive/2005/03/21/325540.aspx

C#版本:

private void MakeSLT(string oldImagePath,string newImagePath)

{

//oldImagePath -原图地址 newImagePath 生成缩略图地址

int width = 150;//缩略图的宽度

int height = 112;// 缩略图的高度

int level = 100; //缩略图的质量 1-100的范围

System.Drawing.Image oldimage = System.Drawing.Image.FromFile(oldImagePath);

System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(width, height,new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);

Bitmap bm=new Bitmap(thumbnailImage);

//处理JPG质量的函数

ImageCodecInfo[] codecs=ImageCodecInfo.GetImageEncoders();

ImageCodecInfo ici=null;

foreach(ImageCodecInfo codec in codecs)

{

if(codec.MimeType=="image/jpeg")

ici=codec;

}

EncoderParameters ep=new EncoderParameters();

ep.Param[0]=new EncoderParameter(Encoder.Quality,(long)level);

bm.Save(newImagePath,ici,ep);

}

VB.NET版本:

Sub makeSLT(ByVal oldImagePath As String,ByVal newImagePath As String)

Dim oimg As System.Drawing.Image = System.Drawing.Image.FromFile(oldImagePath)

Dim nimg As System.Drawing.Image = oimg.GetThumbnailImage(wids, heis, Nothing, IntPtr.Zero)

Response.Clear()

Dim outs As Bitmap = New Bitmap(nimg)

处理图像质量

Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageEncoders()

Dim ici As ImageCodecInfo = System.DBNull

For Each codec As ImageCodecInfo In codecs

If codec.MimeType = "image/jpeg" Then

ici = codec

End If

Next

Dim ep As EncoderParameters = New EncoderParameters

ep.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, CLng(100))

outs.Save(newImagePath, ici, ep)

End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航