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. ubuntu 解决中文zip乱码问题

    用到的工具是The Unarchiver项目提供的lsar/unar工具.The Unarchiver项目主页:http://code.google.com/p/theunarchiver/ 安装(1 ...

  2. C++的默认构造函数与构造函数

    今天看书,忽然发现自己对默认构造函数/构造函数的理解很模糊,在实际项目中写类时,这些细节问题并没有涉及到.因此,就专门对着<C++ Primer Plus>将默认构造函数/构造函数这一块简 ...

  3. string和char*的相互转换

    原文地址: 点击打开链接

  4. HTML5在VS2010中的智能提示

    按照baidu首页的方法是行不通的,于是尝试下面的方法 原文来自这里,我翻译以下   下载这个文件 this archive 并解压. 复制 html_5.xsd to D:\Program File ...

  5. React学习——ListView组件

    (草稿) 先把代码放上来,再补充说明 <!DOCTYPE html> <html> <head> <title>React ListView</t ...

  6. VC保存当面某个区域的图片

    void ViewReportDlg::CopyScreenToBitmap() { CDC *cdc = this->GetDC(); HDC wnd = cdc->GetSafeHdc ...

  7. NOIP 考前 数据结构复习

    BZOJ 1455 左偏树即可 #include <cstdio> #define LL long long ; struct Info{LL l,r,v,Dis;}Tree[Maxn]; ...

  8. software_testing_work3_question2

    package com.Phantom; import java.rmi.server.Operation; import java.util.Scanner; public class Work3_ ...

  9. C++开发过程多线程同步lock的实现

    在程序开发过程经常使用到多线程,而多线程始终与锁存在紧密地联系,以下详细的介绍如何在C++程序开发过程中自定义锁的几种方法. 1. 下面给出一段代码展现如何通过Mutex实现锁的功能(window p ...

  10. 服务器使用recast navigation

    在3D MMO或者其他类型的游戏中,通常需要进行寻路处理,地图针对寻路有多种方案,比如划分格子,凸多边形等,本篇介绍一种比较常用的navigation mesh的方式来进行寻路.不过整套navmesh ...