public class GenerateThumbnail
    {
        private Image imageFrom;
        /// <summary>
        /// 源图的路径(含文件名及扩展名
        /// </summary>
        /// <param name="pathImageFrom">源图的路径(含文件名及扩展名</param>
        public GenerateThumbnail(string pathImageFrom)
        {
            imageFrom = Image.FromFile(pathImageFrom);
        }
        /// <summary>
        /// 生成缩略图 静态方法
        /// </summary>
        /// <param name="pathImageTo">生成的缩略图所保存的路径(含文件名及扩展名)注意:扩展名一定要与生成的缩略图格式相对应</param>
        /// <param name="Percent">比例 例如 0.8...</param>
        public void GenThumbnail(string pathImageTo, double Percent)
        {
            GenThumbnail(pathImageTo, Convert.ToInt32(imageFrom.Width * Percent), Convert.ToInt32(imageFrom.Height * Percent));
        }
        /**/
        /// <summary>
        ///  生成缩略图 静态方法
        /// </summary>
        /// <param name="pathImageTo"> 生成的缩略图所保存的路径(含文件名及扩展名)
        ///                            注意:扩展名一定要与生成的缩略图格式相对应 </param>
        /// <param name="width"> 欲生成的缩略图 "画布" 的宽度(像素值) </param>
        /// <param name="height"> 欲生成的缩略图 "画布" 的高度(像素值) </param>
        public void GenThumbnail(string pathImageTo, int width, int height)
        {
            Bitmap bmp = new Bitmap(width, height);
            Graphics g = Graphics.FromImage(bmp);
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.DrawImage(imageFrom, , , width, height), , , imageFrom.Width, imageFrom.Height), GraphicsUnit.Pixel);
            try
            {
                if (imageFrom.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
                    bmp.Save(pathImageTo, ImageFormat.Jpeg);
                else if (imageFrom.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
                    bmp.Save(pathImageTo, ImageFormat.Png);
                else if (imageFrom.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
                    bmp.Save(pathImageTo, ImageFormat.Gif);
                else if (imageFrom.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Icon))
                    bmp.Save(pathImageTo, ImageFormat.Icon);
                else if (imageFrom.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff))
                    bmp.Save(pathImageTo, ImageFormat.Tiff);
                else if (imageFrom.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Wmf))
                    bmp.Save(pathImageTo, ImageFormat.Wmf);
                else if (imageFrom.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
                    bmp.Save(pathImageTo, ImageFormat.Bmp);
                else if (imageFrom.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Emf))
                    bmp.Save(pathImageTo, ImageFormat.Emf);
                else if (imageFrom.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Exif))
                    bmp.Save(pathImageTo, ImageFormat.Exif);
                else
                    throw new Exception("无此类型图片");
            }
            finally
            {
                //显示释放资源
                imageFrom.Dispose();
                bmp.Dispose();
                g.Dispose();
            }
        }
    }

C#实现略缩图的更多相关文章

  1. java自动生成略缩图

    当你要做一个图库的项目时,对图片大小.像素的控制是首先需要解决的难题. 本篇文章,在前辈的经验基础上,分别对单图生成略缩图和批量生成略缩图做个小结. 一.单图生成略缩图 单图经过重新绘制,生成新的图片 ...

  2. Bootstrap-CL:略缩图

    ylbtech-Bootstrap-CL:略缩图 1.返回顶部 1. Bootstrap 缩略图 本章将讲解 Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstr ...

  3. php 制作略缩图

    一.需求 最近公司的项目中有个需求,就是用户上传自己的微信二维码,然后系统会自动将用户的微信二维码合并到产品中 二.分析 因为该系统是手机端的,所以从用户端的体验出发,用户当然是直接在微信上保存二维码 ...

  4. java,图片压缩,略缩图

    在网上找了两个图片的缩放类,在这里分享一下: package manager.util; import java.util.Calendar; import java.io.File; import ...

  5. 微信分享接口 略缩图 php

    php插件下载地址:  https://files.cnblogs.com/files/fan-bk/jssdk_php.rar 提示:如果插件里面的jssdk.php函数 file_get_cont ...

  6. android 获取 图片或视频略缩图

    /** * 根据指定的图像路径和大小来获取缩略图 此方法有两点好处: 1. * 使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度, * 第二次读取的bitmap是根 ...

  7. Bootstrap 学习笔记4 巨幕页头略缩图警告框

  8. 智能的PHP缩图类

    *作者:落梦天蝎(beluckly)*完成时间:2006-12-18*类名:CreatMiniature*功能:生成多种类型的缩略图*基本参数:$srcFile,$echoType*方法用到的参数:$ ...

  9. 2018.10.23 NOIP模拟 “新”的家园(缩图+dijksta/spfa)

    传送门 考试70分骗分写挂了=30分=全场最低. 哎今天230垫底了. 这题出的挺好. 对于非关键点直接缩点. 每次把要查的insertinsertinsert进缩好的图里面跑spfa/dijkstr ...

随机推荐

  1. Visual C# 代码段

    代码段是现成的代码段,您可以快速将其插入到您的代码中. 例如,for 代码段创建一个空的 for 循环. 有些代码段为外侧代码段,这些代码段允许您先选择代码行,然后选择要并入选定代码行的代码段. 例如 ...

  2. Android实现Layout缩放动画

    最近看到Any.do的缩放效果很酷,看到一篇讲Layout缩放动画实现的文章,记录一下: http://edison-cool911.iteye.com/blog/704812

  3. OD19

    这个程序关掉之后会出现一个NAG窗口  甚是讨厌   于是我们要想办法干掉他,先查壳  发现没有壳  VC写的 加载进一个工具reshecker试试,发现一个我们要找的对话框, 那我们记住这个位置 1 ...

  4. [.NET] CErrStack 方便地管理错误或异常

    Option Explicit On Option Strict On Imports System.Reflection Imports System.Diagnostics Public Stru ...

  5. android view :事件

    在view绘制完成后,要想在和view交互一定就要使用事件了,这些事件包括触屏,按键,以及轨迹球,说起轨迹球,在黑莓的手机上常见,现在触屏出来之后基本上就没有这个东西了.这些事件从屏幕上产生出来,会进 ...

  6. 使用RelativeLayout控制WebView以及Bottom按钮的位置

    使用RelativeLayout控制WebView以及Bottom按钮的位置 (地址) 在Design View中加入控件RelativeLayout, WebView, LinearLayout(H ...

  7. C++ 中堆栈学习

  8. 项目中创建单元测试—VS2012

    我们在每个项目的开发过程中,开发完一个功能,自己首先需要测试一下,VS提供了很方便的测试功能,可以很容易的创建单元测试,但是在VS2012中类名上点击右键没有『创建单元测试』这个菜单,需要先进行设置一 ...

  9. kafka性能基准测试

    转载请注明出处:http://www.cnblogs.com/xiaodf/ 1.测试环境 该benchmark用到了六台机器,机器配置如下 l  IntelXeon 2.5 GHz processo ...

  10. 特性Atrribute和枚举

    特性的简单实用!特性存放在metedata里面,它离不开反射. Program.cs class Program { static void Main(string[] args) { Console ...