发现用GetThumbnailImage的方式生成缩略图,如果是大图片,效果还可以,如果是小图片,效果就很差了。改用拉伸图片的方式效果比较不错。
using System;
using System.Drawing;
using System.Drawing.Imaging;

public static void CompressJpeg(string strPath, int intWidth, long lngQuality)
{
        var img = Image.FromFile(strPath);        // 如果不是图片会出错。
        if(img.Width <= intWidth)
        {
                img.Dispose();
                return;
        }
        var intHeight = img.Height * intWidth / img.Width;
        // 创建位图及相关联的图形处理工具,在位图上画缩略图
        var thm = new Bitmap(intWidth, intHeight);
        var grp = Graphics.FromImage(thm);
        grp.DrawImage(img, 0, 0, intWidth, intHeight);
        // 释放占用的图片文件
        img.Dispose();
        grp.Dispose();
        // 设置图片质量
        var ep = new EncoderParameters(1);
        ep.Param[0] = new EncoderParameter(Encoder.Quality, lngQuality);
        // 保存缩略图
        // thm.Save(strPath);        // 如果不设置图片质量,可直接保存
        thm.Save(strPath, ImageCodecInfo.GetImageEncoders().FirstOrDefault(i => i.MimeType == "image/jpeg"), ep);
        thm.Dispose();
}

来源:http://www.fengyun.org/BBS/ZhuTi.asp?BH=128

posted on 2011-03-02 20:40  sn_wolf  阅读(1592)  评论(2编辑  收藏  举报