1. private Bitmap ZoomImage(Bitmap bitmap, int destHeight, int destWidth)
  2. {
  3. try
  4. {
  5. System.Drawing.Image sourImage = bitmap;
  6. int width = 0, height = 0;
  7. //按比例缩放
  8. int sourWidth = sourImage.Width;
  9. int sourHeight = sourImage.Height;
  10. if (sourHeight > destHeight || sourWidth > destWidth)
  11. {
  12. if ((sourWidth * destHeight) > (sourHeight * destWidth))
  13. {
  14. width = destWidth;
  15. height = (destWidth * sourHeight) / sourWidth;
  16. }
  17. else
  18. {
  19. height = destHeight;
  20. width = (sourWidth * destHeight) / sourHeight;
  21. }
  22. }
  23. else
  24. {
  25. width = sourWidth;
  26. height = sourHeight;
  27. }
  28. Bitmap destBitmap = new Bitmap(destWidth, destHeight);
  29. Graphics g = Graphics.FromImage(destBitmap);
  30. g.Clear(Color.Transparent);
  31. //设置画布的描绘质量
  32. g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
  33. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  34. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
  35. g.DrawImage(sourImage, new Rectangle((destWidth - width) / 2, (destHeight - height) / 2, width, height), 0, 0, sourImage.Width, sourImage.Height, GraphicsUnit.Pixel);
  36. g.Dispose();
  37. //设置压缩质量
  38. System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();
  39. long[] quality = new long[1];
  40. quality[0] = 100;
  41. System.Drawing.Imaging.EncoderParameter encoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
  42. encoderParams.Param[0] = encoderParam;
  43. sourImage.Dispose();
  44. return destBitmap;
  45. }
  46. catch
  47. {
  48. return bitmap;
  49. }
  50. }

最新文章

  1. hashMap 深入理解
  2. 试验删除RAC(ORA10G)节点
  3. 华为地铁换乘 Java
  4. action func用法记记
  5. 在opencv3中实现机器学习之:利用svm(支持向量机)分类
  6. [转]SEP 11.x 迁移
  7. [OpenS-CAD]屏幕坐标转换分析
  8. Oracle 11g 安装
  9. sql server2005内存过高释放方法
  10. 我爱工程化 之 gulp 使用(一)
  11. Unity问答——请问一下动画状态机怎么判断动画是否播完了?
  12. 采用rest接口对接而非webservice
  13. IIS7添加mp4 MINE类型报错:无法写入配置文件
  14. 利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类
  15. Java编程练习(四)——集合框架应用
  16. JavaScript学习笔记(十四)——对象
  17. Qt布局操作
  18. Fire Again CodeForces - 35C (BFS)
  19. [emacs] emacs调整C代码的缩进格式等
  20. APIO 2014 回文串(Manacher+后缀自动机+倍增)

热门文章

  1. HDU 3466 Proud Merchants(0-1背包)
  2. bam/sam格式说明--转载
  3. python 同步与异步性能区别
  4. docker 出现 Error response from daemon
  5. Bate冲刺四——《WAP团队》
  6. 消息/事件, 同步/异步/协程, 并发/并行 协程与状态机 ——从python asyncio引发的集中学习
  7. npm 安装文件 运行报错 %1 is not a valid Win32 application
  8. Unity3D中人物模型的构成
  9. AIM Tech Round 3 (Div. 1) (构造,树形dp,费用流,概率dp)
  10. mac 安装nginx,并配置nginx的运行环境