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

  • 相关阅读:
    (数据科学学习手札48)Scala中的函数式编程
    Java中的集合(十三) 实现Map接口的Hashtable
    Java中的集合(十二) 实现Map接口的WeakHashMap
    Java中的集合(十一) 实现Map接口的TreeMap
    Java集合(十)实现Map接口的HashMap
    Java集合(九)哈希冲突及解决哈希冲突的4种方式
    Java集合(八)哈希表及哈希函数的实现方式
    Java中的集合(七)双列集合顶层接口------Map接口架构
    Java中的集合(六)继承Collection的Set接口
    Java中的集合(五)继承Collection的List接口
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/3568959.html
Copyright © 2011-2022 走看看