找回密码
 注册
搜索
热搜: 回贴

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

2009-12-13 13:23| 发布者: admin| 查看: 41| 评论: 0|原作者: 心然

★ASP.NET生成缩略图失真非常厉害,如......


  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

最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 01:31 , Processed in 0.167094 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部