1 /// <summary> 2 /// 压缩图片 3 /// </summary> 4 /// <param name="fileByte">图片字节数组</param> 5 /// <param name="quality">压缩质量0-100之间,数值越大质量越高</param> 6 /// <returns></returns> 7 public static byte[] CompressionImage(byte[] fileByte, long quality) 8 { 9 using (MemoryStream fileStream = new MemoryStream(fileByte)) 10 { 11 using (System.Drawing.Image img = System.Drawing.Image.FromStream(fileStream)) 12 { 13 using (Bitmap bitmap = new Bitmap(img)) 14 { 15 ImageCodecInfo CodecInfo = GetEncoder(img.RawFormat); 16 System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; 17 EncoderParameters myEncoderParameters = new EncoderParameters(1); 18 EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality); 19 myEncoderParameters.Param[0] = myEncoderParameter; 20 using (MemoryStream ms = new MemoryStream()) 21 { 22 bitmap.Save(ms, CodecInfo, myEncoderParameters); 23 myEncoderParameters.Dispose(); 24 myEncoderParameter.Dispose(); 25 return ms.ToArray(); 26 } 27 } 28 } 29 } 30 } 31 /// <summary> 32 /// 获取指定图片编码信息 33 /// </summary> 34 /// <param name="format"></param> 35 /// <returns></returns> 36 private static ImageCodecInfo GetEncoder(ImageFormat format) 37 { 38 ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); 39 foreach (ImageCodecInfo codec in codecs) 40 { 41 if (codec.FormatID == format.Guid) 42 { 43 return codec; 44 } 45 } 46 return null; 47 }