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;
            }

  • 相关阅读:
    C++ std::stack 基本用法
    linux6 安装 ntopng
    linux 6安装 redis2.6
    Linux6搭建Tomcat服务器
    EXSI6.5忘记root密码
    python3笔记--数字
    python3笔记--运算符
    python3基本数据类型
    python3笔记
    centos6.X升级python3.X方法
  • 原文地址:https://www.cnblogs.com/tx720/p/5607114.html
Copyright © 2011-2022 走看看