zoukankan      html  css  js  c++  java
  • 图片压缩技术

     private string ImgComPress(string fromBase64)
            {
                Bitmap bitMap = new Bitmap(new MemoryStream(Convert.FromBase64String(fromBase64)));
                //Bitmap bitMap = new Bitmap(Server.MapPath("./1.jpg"));
                ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
                System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
                EncoderParameters myEncoderParameters = new EncoderParameters(1);
                EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 80L);
                myEncoderParameters.Param[0] = myEncoderParameter;
                Bitmap newbitMap = null;
                if (bitMap.Height > 1080)
                {
                    float newWidth = ((float)bitMap.Width / bitMap.Height) * 1080;
                    newbitMap = new Bitmap(bitMap, (int)newWidth, 1080);//从指定的现有图像并使用指定的大小初始化 Bitmap 类的新实例。
                }
                using (MemoryStream ms = new MemoryStream())
                {
                    if (newbitMap != null)
                    {
                        newbitMap.Save(ms, jgpEncoder, myEncoderParameters);
                    }
                    else
                    {
                        bitMap.Save(ms, jgpEncoder, myEncoderParameters);
                        bitMap.Save(Server.MapPath("./2.jpg"));
                        bitMap.Save(Server.MapPath("./2_1.jpg"), jgpEncoder, myEncoderParameters);
                    }
                    if (ms.Length >= 1)
                    {
                        return Convert.ToBase64String(ms.GetBuffer());
                    }
                }
                return fromBase64;
            }

            private ImageCodecInfo GetEncoder(ImageFormat format)
            {
                ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
                foreach (ImageCodecInfo codec in codecs)
                {
                    if (codec.FormatID == format.Guid)
                    {
                        return codec;
                    }
                }
                return null;
            }

  • 相关阅读:
    postman使用
    web应用服务器性能监控及调优
    软件测试的相关网站
    web测试点梳理
    HTTP协议详解
    Fidder详解之get和post请求
    浅谈HTTPS协议
    APP测试基本流程
    Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
    为学日益,为道日损
  • 原文地址:https://www.cnblogs.com/tx720/p/5607114.html
Copyright © 2011-2022 走看看