zoukankan      html  css  js  c++  java
  • 使用GetThumbnailImage进行图片缩放操作

    /// <summary>
    /// 获取等比例缩放图片的方法
    /// </summary>
    /// <param name="imgPath">待缩放图片路径</param>
    /// <param name="savePath">缩放图片保存路径</param>
    /// <param name="format">缩放图片保存的格式</param>
    /// <param name="scaling">要保持的宽度或高度</param>
    /// <param name="keepWidthOrHeight">如果为true则保持宽度为scaling,否则保持高度为scaling</param>
    /// <returns></returns>
    public bool GetThumbnail(string imgPath, string savePath, ImageFormat format, int scaling, bool keepWidthOrHeight)
    {
        try
        {
            using (Bitmap myBitmap = new Bitmap(imgPath))
            {
                int width = 0;
                int height = 0;
                int tw = myBitmap.Width;//图像的实际宽度
                int th = myBitmap.Height;//图像的实际高度
                if (keepWidthOrHeight)//保持宽度
                {
                    #region 自动保持宽度
                    if (scaling >= tw)
                    {
                        width = tw;
                        height = th;
                    }
                    else
                    {
                        double ti = Convert.ToDouble(tw) / Convert.ToDouble(scaling);
                        if (ti == 0d)
                        {
                            width = tw;
                            height = th;
                        }
                        else
                        {
                            width = scaling;
                            height = Convert.ToInt32(Convert.ToDouble(th) / ti);
                        }
                    }
                    #endregion
                }
                else
                {
                    #region 自动保持高度
                    if (scaling >= th)
                    {
                        width = tw;
                        height = th;
                    }
                    else
                    {
                        double ti = Convert.ToDouble(th) / Convert.ToDouble(scaling);
                        if (ti == 0d)
                        {
                            width = tw;
                            height = th;
                        }
                        else
                        {
                            width = Convert.ToInt32(Convert.ToDouble(tw) / ti);
                            height = scaling;
                        }
                    }
                    #endregion
                }
                using (Image myThumbnail = myBitmap.GetThumbnailImage(width, height, () => { return false; }, IntPtr.Zero))
                {
                    myThumbnail.Save(savePath, format);
                }
            }
            return true;
        }
        catch
        {
            return false;
        }
    }

    上面的方法适合在vs2008中使用,如果是2005只需将

    using (Image myThumbnail = myBitmap.GetThumbnailImage(width, height, () => { return false; }, IntPtr.Zero))

    这句换成

    using (Image myThumbnail = myBitmap.GetThumbnailImage(width, height, new Image.GetThumbnailImageAbort(delegate { return false; }), IntPtr.Zero))

    即可。

    使用示例:GetThumbnail("d:/1.jpg", "d:/2.jpg", ImageFormat.Jpeg, 263, false);

    引用自 http://www.cnblogs.com/sq111433/archive/2009/12/01/1614205.html

  • 相关阅读:
    C# 实现 Snowflake算法生成唯一性Id
    kafka可视化客户端工具(Kafka Tool)的基本使用(转)
    docker 安装kafka
    Model类代码生成器
    使用docker 部署rabbitmq 镜像
    Vue 增删改查 demo
    git 提交代码到库
    Android ble蓝牙问题
    mac 配置 ssh 到git (Could not resolve hostname github.com, Failed to connect to github.com port 443 Operation timed out)
    okhttp
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/2815822.html
Copyright © 2011-2022 走看看