Img.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Drawing.Drawing2D;
  5. using System.Drawing.Imaging;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Text;
  9. namespace Azylee.Core.DrawingUtils.ImageUtils
  10. {
  11. /// <summary>
  12. /// 图片操作工具类
  13. /// </summary>
  14. public static class IMG
  15. {
  16. /// <summary>
  17. /// 创建缩略图
  18. /// </summary>
  19. /// <param name="img"></param>
  20. /// <param name="width"></param>
  21. /// <param name="height"></param>
  22. /// <param name="interpolation"></param>
  23. /// <param name="smoothing"></param>
  24. /// <returns></returns>
  25. public static Bitmap Thumbnail(Image img, int width, int height,
  26. InterpolationMode interpolation = InterpolationMode.High,
  27. SmoothingMode smoothing = SmoothingMode.HighSpeed)
  28. {
  29. int ow = img.Width;
  30. int oh = img.Height;
  31. //新建一个bmp图片
  32. Bitmap bitmap = new Bitmap(width, height);
  33. //新建一个画板
  34. Graphics g = Graphics.FromImage(bitmap);
  35. //设置高质量插值法
  36. g.InterpolationMode = InterpolationMode.High;
  37. //设置低质量,高速度呈现平滑程度
  38. g.SmoothingMode = SmoothingMode.HighSpeed;
  39. //清空画布并以透明背景色填充
  40. g.Clear(Color.Transparent);
  41. //在指定位置并且按指定大小绘制原图片的指定部分
  42. g.DrawImage(img, new Rectangle(0, 0, width, height), new Rectangle(0, 0, ow, oh), GraphicsUnit.Pixel);
  43. return bitmap;
  44. }
  45. /// <summary>
  46. /// 压缩图片
  47. /// </summary>
  48. /// <param name="bitmap"></param>
  49. /// <param name="quality">0-100</param>
  50. /// <param name="format"></param>
  51. /// <returns></returns>
  52. public static byte[] Compression(Bitmap bitmap, int quality)
  53. {
  54. try
  55. {
  56. ImageFormat format = ImageFormat.Jpeg;
  57. //获取图像编码解码器
  58. ImageCodecInfo CodecInfo = null;
  59. ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
  60. foreach (ImageCodecInfo codec in codecs)
  61. if (codec.FormatID == format.Guid) CodecInfo = codec;
  62. //转换图片质量
  63. if (CodecInfo != null)
  64. {
  65. System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
  66. EncoderParameters myEncoderParameters = new EncoderParameters(1);
  67. EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality);
  68. myEncoderParameters.Param[0] = myEncoderParameter;
  69. using (MemoryStream ms = new MemoryStream())
  70. {
  71. bitmap.Save(ms, CodecInfo, myEncoderParameters);
  72. myEncoderParameters.Dispose();
  73. myEncoderParameter.Dispose();
  74. return ms.ToArray();
  75. }
  76. }
  77. }
  78. catch { }
  79. return null;
  80. }
  81. }
  82. }