图片压缩(缩略图)

一、命名空间

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

 

posted @ 2022-04-07 13:58  猴猴手记  阅读(142)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end