压缩图片
2015-10-14 15:42
148 查看
/// <summary> /// 压缩图片 /// </summary> /// <param name="fileByte">图片字节数组</param> /// <param name="quality">压缩质量0-100之间,数值越大质量越高</param> /// <returns></returns> public static byte[] CompressionImage(byte[] fileByte, long quality) { using (MemoryStream fileStream = new MemoryStream(fileByte)) { using (System.Drawing.Image img = System.Drawing.Image.FromStream(fileStream)) { using (Bitmap bitmap = new Bitmap(img)) { ImageCodecInfo CodecInfo = GetEncoder(img.RawFormat); System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; EncoderParameters myEncoderParameters = new EncoderParameters(1); EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality); myEncoderParameters.Param[0] = myEncoderParameter; using (MemoryStream ms = new MemoryStream()) { bitmap.Save(ms, CodecInfo, myEncoderParameters); myEncoderParameters.Dispose(); myEncoderParameter.Dispose(); return ms.ToArray(); } } } } } /// <summary> /// 获取指定图片编码信息 /// </summary> /// <param name="format"></param> /// <returns></returns> private static ImageCodecInfo GetEncoder(ImageFormat format) { ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); foreach (ImageCodecInfo codec in codecs) { if (codec.FormatID == format.Guid) { return codec; } } return null; }
相关文章推荐
- Android开发之隐式Intent中Intent-filter的三个属性-action,category,data
- mysql创建新的用户及flush privileges解析
- 如何设置Tomcat默认主页
- UITableView headerViewForSection 返回 (空值)
- 20.Android 设备工具DeviceUtil
- <LeetCode><Easy>258Add Digits
- Android动画之三:Property Animation 完全解析 (上)
- Hive函数大全
- Swift2.1 语法指南——错误处理
- [内存管理] linux kernel内存映射实例分析
- Android自定义View(一)(验证码)
- Form is submitted twice when Enter key is pressed twice
- Spring从配置中获取bean取不到
- 关于安卓使用weight属性的一些见解
- Oracle分析函数
- 第七周项目5排队看病模拟
- PAT1029旧键盘(20)
- C#中子类调用父类的实现方法
- 利用 Express 托管静态文件
- 网站定位之---根据IP获得区域