C# 图像压缩,该如何解决
C# 图像压缩
正在做个小东西,需要将用户上传的图片压缩一下,主要是为了节约空间。
想问一下有没有开源的.Net图像处理库或者专门的图像压缩库。
谢谢!
------解决方案--------------------
SharpZip就OK了
http://www.icsharpcode.net/opensource/sharpziplib/
------解决方案--------------------
很多图片格式自带压缩,就算再压缩效果也不好。不建议再压缩了。
如果只是为了加载 可以在IIS启用GZIP
------解决方案--------------------
正在做个小东西,需要将用户上传的图片压缩一下,主要是为了节约空间。
想问一下有没有开源的.Net图像处理库或者专门的图像压缩库。
谢谢!
------解决方案--------------------
SharpZip就OK了
http://www.icsharpcode.net/opensource/sharpziplib/
------解决方案--------------------
很多图片格式自带压缩,就算再压缩效果也不好。不建议再压缩了。
如果只是为了加载 可以在IIS启用GZIP
------解决方案--------------------
- C# code
#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