C# 图像压缩

htynkn 2012-03-15 04:28:12
正在做个小东西,需要将用户上传的图片压缩一下,主要是为了节约空间。
想问一下有没有开源的.Net图像处理库或者专门的图像压缩库。

谢谢!
...全文
181 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonocast 2012-03-15
  • 打赏
  • 举报
回复
.NET4的话就用BitmapImage,设置DecodedWidth即可降低精度,然后通过JpegEncoder Save成文件
http://nonocast.cn/?p=2630
Rock870210 2012-03-15
  • 打赏
  • 举报
回复
试试看效果如何,不行换其他方式
Rock870210 2012-03-15
  • 打赏
  • 举报
回复

#region 图片压缩,转换为JPG格式
/// <summary>
/// 获取指定mimeType的ImageCodecInfo
/// </summary>
private static ImageCodecInfo GetImageCodecInfo(string mimeType)
{
ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
foreach(ImageCodecInfo ici in CodecInfo)
{
if(ici.MimeType == mimeType)
return ici;
}
return null;
}


/// <summary>
/// 获取inputStream中的Bitmap对象
/// </summary>
public static Bitmap GetBitmapFromStream(Stream inputStream)
{
Bitmap bitmap = new Bitmap(inputStream);
return bitmap;
}

/// <summary>
/// 将Bitmap对象压缩为JPG图片类型
/// </summary>
/// <param name="bmp">源bitmap对象</param>
/// <param name="saveFilePath">目标图片的存储地址</param>
/// <param name="quality">压缩质量,越大照片越清晰,推荐80</param>
public static void CompressAsJPG(Bitmap bmp, string saveFilePath, int quality)
{
EncoderParameter p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
;
EncoderParameters ps = new EncoderParameters(1);
ps.Param[0] = p;
bmp.Save(saveFilePath, GetImageCodecInfo("image/jpeg"), ps);
bmp.Dispose();
}

/// <summary>
/// 将inputStream中的对象压缩为JPG图片类型
/// </summary>
/// <param name="inputStream">源Stream对象</param>
/// <param name="saveFilePath">目标图片的存储地址</param>
/// <param name="quality">压缩质量,越大照片越清晰,推荐80</param>
public static void CompressAsJPG(Stream inputStream, string saveFilePath, int quality)
{
Bitmap bmp = GetBitmapFromStream(inputStream);
CompressAsJPG(bmp, saveFilePath, quality);
}
#endregion
gzw13999 2012-03-15
  • 打赏
  • 举报
回复
很多图片格式自带压缩,就算再压缩效果也不好。不建议再压缩了。

如果只是为了加载 可以在IIS启用GZIP
htynkn 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nonocast 的回复:]

SharpZip就OK了
http://www.icsharpcode.net/opensource/sharpziplib/
[/Quote]

SharpZip是压成zip吧,可能是我表述不清楚,我希望压缩后依然是图片,但是图片可以小一些或者效果差一些
nonocast 2012-03-15
  • 打赏
  • 举报
回复
SharpZip就OK了
http://www.icsharpcode.net/opensource/sharpziplib/

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧