一、命名空间
using Microsoft.AspNetCore.Http;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
二、
#region 图片压缩
/// <summary>
/// 图片压缩
/// </summary>
/// <param name="formFile">图片</param>
/// <param name="destFilename">保存路径(包括名称)</param>
/// <param name="width">宽度</param>
/// <param name="height">高度</param>
public static void CreateThumbnail(IFormFile formFile, string destFilename, int width, int height)
{
MemoryStream ms = new MemoryStream();// 创建其支持存储区为内存的流。
formFile.CopyTo(ms);//将上载文件的内容复制到目标流。
Image image = Image.FromStream(ms);//创建图像
int width2 = image.Width;
int height2 = image.Height;
float num = (float)height / (float)height2;
if ((float)width / (float)width2 < num)
{
num = (float)width / (float)width2;
}
width = (int)((float)width2 * num);
height = (int)((float)height2 * num);
Image image2 = new Bitmap(width, height);
Graphics graphics = Graphics.FromImage(image2);
graphics.Clear(Color.White);
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.DrawImage(image, new Rectangle(0, 0, width, height), new Rectangle(0, 0, width2, height2), GraphicsUnit.Pixel);
EncoderParameters encoderParameters = new EncoderParameters();
EncoderParameter encoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
encoderParameters.Param[0] = encoderParameter;
ImageCodecInfo[] imageEncoders = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo encoder = null;
for (int i = 0; i < imageEncoders.Length; i++)
{
if (imageEncoders[i].FormatDescription.Equals("JPG") || imageEncoders[i].FormatDescription.Equals("JPEG"))
{
encoder = imageEncoders[i];
break;
}
}
image2.Save(destFilename, encoder, encoderParameters);
encoderParameters.Dispose();
encoderParameter.Dispose();
image.Dispose();
image2.Dispose();
graphics.Dispose();
}
#endregion