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

使用GetThumbnailImage进行图片缩放操作的更多相关文章

  1. .net学习笔记----利用System.Drawing.Image类进行图片相关操作

    C#中对图片的操作主要是通过System.Drawing.Image等类进行. 一.将图片转换为字节流 /// <summary> /// 图片处理帮助类 /// </summary ...

  2. Android图片缩放方法

    安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...

  3. Android安卓开发中图片缩放讲解

    安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...

  4. Android----基于多触控的图片缩放和拖动代码实现

    引自:http://www.codefans.net/articles/584.shtml 一个android中自定义的ImageView控制,可对图片进行多点触控缩放和拖动类,包括了对图片放大和图片 ...

  5. java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。

    java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...

  6. CSS实现图片缩放特效

    今天是感恩节,祝大家感恩节快乐哦!最近天冷了,大家注意保暖哟.下面一起看看小颖写的demo吧. html代码: <!DOCTYPE html> <html> <head& ...

  7. HTML5 图片缩放功能

    腾讯新闻上用的插件(xw.qq.com) 缩放插件scale.js (function(window, undefined) { var document = window.document, sup ...

  8. PHP图片裁剪_图片缩放_PHP生成缩略图

    在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多,每天更新大量图,靠人工PS处理是不现实的,那么有没有自动处理图片的程序了! ...

  9. iOS开发UI篇—UIScrollView控件实现图片缩放功能

    iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...

随机推荐

  1. php版本的选择

    简单来说non-thread-safe 非 线程安全 与IIS 搭配环境,thread-safe 线程安全 与apache 搭配的 环境这个大家一定要注意,否则用错了版本,apache是无法启动的,另 ...

  2. 1-git初体验

    1 准备工作: windows系统下,安装好msysgit  -安装好后,在开始菜单找到Git  > Git bash 2 当前电脑配置用户名 邮箱 $ git config --global ...

  3. GRE 协议简介

    1. 协议简介    gre(generic routing encapsulation,通用路由封装)协议是对某些网络层协议(如ip 和ipx)的数据报进行封装,使这些被封装的数据报能够在另一个网络 ...

  4. 关于http与https区别

    http与https: http叫超文本传输协议,信息为明文传输.https是具有安全性的传输协议,是由http+ssl层,需要到ca申请证书,一般需要费用.信息为加密传输,需要验证用户身份.二者的端 ...

  5. Win10系统下安装Ubuntu16.04.3教程与设置

    在Win10上刚刚装好Ubuntu16.04.3,装了不下于10次,期间出现很多问题,趁着还有记忆,写下这篇教程,里面还有Ubuntu系统的优化与Win10的一些设置. Part 1 制作Ubuntu ...

  6. GPUImage库的使用

    GPUImage开源项目地址:https://github.com/BradLarson/GPUImage GPUImage使用说明:https://github.com/BradLarson/GPU ...

  7. 用Python解答百度测试开发算法面试题

    吾八哥本人之前有幸能接到百度北京总部的人工智能测试开发岗位的面试机会,在二面的过程中,面试官出了一道算法题,题目是:有一组"+"和"-"符号,要求将" ...

  8. win10 uwp 右击浮出窗在点击位置

    本文主要让MenuFlyout出现在我们右击位置. 我们一般使用的MenuFlyout写在前台,写在Button里面,但是可能我们的MenuFlyout显示的位置和我们想要的不一样. 通过使用后台写S ...

  9. JAVA提高六:泛型

    在面向对象编程语言中,多态算是一种泛化机制.例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性.此外,如果将方法参数声明为接口,将 ...

  10. 文本处理工具(grep)

    文本处理工具:     Linux上文本处理三剑客:        文本过滤工具(模式:pattern)工具:          1.grep:支持基本正则表达式;          2.egrep: ...