,转C#压缩图片至指定宽度,并指定压缩质量。

发现用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