zoukankan      html  css  js  c++  java
  • winfrom 图片等比例压缩

    效果图:

    核心代码:

    /// <summary>
            /// 等比例缩放图片
            /// </summary>
            /// <param name="bitmap"></param>
            /// <param name="destHeight"></param>
            /// <param name="destWidth"></param>
            /// <returns></returns>
            private static Bitmap ZoomImage(Bitmap bitmap, int destWidth, int destHeight)
            {
                try
                {
                    Image sourImage = bitmap;
                    int width = 0, height = 0;
                    //按比例缩放           
                    int sourWidth = sourImage.Width;
                    int sourHeight = sourImage.Height;
                    if (sourHeight > destHeight || sourWidth > destWidth)
                    {
                        if ((sourWidth * destHeight) > (sourHeight * destWidth))
                        {
                            width = destWidth;
                            height = (destWidth * sourHeight) / sourWidth;
                        }
                        else
                        {
                            height = destHeight;
                            width = (sourWidth * destHeight) / sourHeight;
                        }
                    }
                    else
                    {
                        width = sourWidth;
                        height = sourHeight;
                    }
                    Bitmap destBitmap = new Bitmap(destWidth, destHeight);
                    Graphics g = Graphics.FromImage(destBitmap);
                    g.Clear(Color.Transparent);
                    //设置画布的描绘质量         
                    g.CompositingQuality = CompositingQuality.HighQuality;
                    g.SmoothingMode = SmoothingMode.HighQuality;
                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    //g.DrawImage(sourImage, new Rectangle((destWidth - width) / 2, (destHeight - height) / 2, width, height), 0, 0, sourImage.Width, sourImage.Height, GraphicsUnit.Pixel);
                    g.DrawImage(sourImage, new Rectangle(12, 0, width, height), 0, 0, sourImage.Width, sourImage.Height, GraphicsUnit.Pixel);
    
                    g.Dispose();
                    //设置压缩质量     
                    System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();
                    long[] quality = new long[1];
                    quality[0] = 100;
                    System.Drawing.Imaging.EncoderParameter encoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
                    encoderParams.Param[0] = encoderParam;
                    sourImage.Dispose();
                    return destBitmap;
                }
                catch
                {
                    return bitmap;
                }
            }
    

      

    Demo下载: https://download.csdn.net/download/u011392711/11144050

  • 相关阅读:
    上海某地产监控项目
    2020,8种必备Selenium编写自动化用例的技巧
    使用 Postman 做 API 自动化测试
    Python最火的第三方开源测试框架 ——pytest
    基于Appium的UI自动化测试
    4招了解前端单元测试
    你应该学会的接口调试神器——Postman高级用法
    分分钟玩转UI自动化测试
    Python Selenium 之数据驱动测试的实现
    python+requests接口自动化框架
  • 原文地址:https://www.cnblogs.com/qtiger/p/10770101.html
Copyright © 2011-2022 走看看