先看调用的方法:

using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class test_Default : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        generalImage();    }    private void generalImage()    {        string savePath = @"images/123.jpg";//原图路径        string smallPath = @"images/small/123.jpg";//要生成的小图        savePath = Server.MapPath(savePath);//这一步别忘了。        smallPath = Server.MapPath(smallPath);//同样这里也不要忘了。        YD.Common.ImageClass imageClass = new YD.Common.ImageClass();        imageClass.ShowThumbnail(savePath, smallPath, 200, 153);//这样调用    }}

生成小图的类:

using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Drawing;using System.Drawing.Imaging;using System.IO;/// <summary>/// ImageClass 的摘要说明/// </summary>namespace YD.Common{    public class ImageClass    {        public bool ThumbnailCallback()        {            return false;        }        public void ShowThumbnail(string oldfile, string newfile, int white, int height)        {            System.Drawing.Image image = System.Drawing.Image.FromFile(oldfile);            //获取原图高度和宽度            int oldh = image.Height;            int oldw = image.Width;            int neww, newh;            neww = white; newh = height;   //直接设定新图的高宽,,            try            {                System.Drawing.Image.GetThumbnailImageAbort callb = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);                System.Drawing.Image bt = new System.Drawing.Bitmap(neww, newh);                System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bt);                gr.Clear(Color.White);                gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;                gr.DrawImage(image, new Rectangle(0, 0, neww, newh), 0, 0, oldw, oldh, GraphicsUnit.Pixel);                switch (oldfile.Substring(oldfile.Length - 3).ToUpper())                {                    case "JPG":                        bt.Save(newfile, ImageFormat.Jpeg);                        break;                    case "GIF":                        bt.Save(newfile, ImageFormat.Gif);                        break;                    case "PNG":                        bt.Save(newfile, ImageFormat.Png);                        break;                    default:                        bt.Save(newfile, ImageFormat.Jpeg);                        break;                }                gr.Dispose();                bt.Dispose();                image.Dispose();            }            catch { }        }    }}

C#生成缩略图源码的更多相关文章

  1. Google Protocol Buffers 快速入门(带生成C#源码的方法)

    Google Protocol Buffers是google出品的一个协议生成工具,特点就是跨平台,效率高,速度快,对我们自己的程序定义和使用私有协议很有帮助. Protocol Buffers入门: ...

  2. 身份证号码查询与生成(C#源码)

    项目要用到这个功能,就写了一个,完整类也就二百来行,很简单.可以在项目中用,也可以作为学习. 源码下载 http://yunpan.cn/cmQCSWkhDnZLJ  访问密码 0227 核心代码如下 ...

  3. 2018-09-13 代码翻译尝试-使用Roaster解析和生成Java源码

    此文是前文使用现有在线翻译服务进行代码翻译的体验的编程语言方面第二点的一个尝试. 参考Which framework to generate source code ? - Cleancode and ...

  4. Hibernate 5.x 生成 SessionFactory 源码跟踪分析

    我们要使用 Hibernate 的功能,首先需要读取 Hibernate 的配置文件,根据配置启动 Hibernate ,然后创建 SessionFactory. 创建 SessionFactory ...

  5. iOS雪花动画、音频图、新闻界面框架、2048游戏、二维码条形码扫码生成等源码

    iOS精选源码 粒子雪花与烟花的动画 iOS 2048游戏 JHSoundWaveView - 简单地声波图.音波图 一个可快速集成的新闻详情界面框架,类似今日头条,腾讯新闻 二维码/条形码扫描及扫描 ...

  6. vue-cli随机生成port源码

    const portfinder = require('portfinder'): const port = await portfinder.getPortPromise(): 两行代码 端口搜索范 ...

  7. 1、Hibernate之生成SessionFactory源码追踪

    Hibernate的所有session都是由sessionFactory来生成的,那么,sessionFactory是怎么得来的呢?它与我们配置的xxx.cfg.xml文件以及xxx.hbm.xml文 ...

  8. 关于aspx 页面生成html 源码顶部空行不得不说的事儿

    原文引用自 http://www.360doc.com/content/12/0910/21/10504424_235418578.shtml 使用.aspx生成的页面一般都会有一个或多个空行,当然这 ...

  9. C#生成电子印章源码

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

随机推荐

  1. HTTPS与MITM

    HTTPS:基于SSL/TSL的HTTP协议 MITM:Man-In-The-Middle中间人攻击 Https下中间人攻击的思路: 1 去https化 2 向CA申请相似域名的证书 防范: 睁大双眼

  2. jquery各种事件使用方法总结(from:天宇之游)

    ps:本博客转自博主  天宇之游 ,地址:http://www.cnblogs.com/cwp-bg/  ,再次感谢天宇之游.jquery事件使用方法总结 一.鼠标事件1. click():鼠标单击事 ...

  3. 我的第一个python web开发框架(9)——目录与配置说明

    和老大聊完后,小白回家接收到相关工具函数包后,就按要求开始干活,首先要做的是熟悉配置参数和了解工具函数有哪些实用的工具. 由于这个项目比较简单,所以不用创建那么多分类,只需要api.common.co ...

  4. jfinal编码问题及解决

    使用jfinal出现了常见的编码问题情况 public void test() { Random r = new Random(); try { Connection conn = createCon ...

  5. Linux入门(2)——Ubuntu16.04安装wineQQ

    http://www.ubuntukylin.com/application/show.php?lang=cn&id=279 下载得到wine-qqintl.zip 解压得到wine-qqin ...

  6. GET 和 POST 比较整理

    差异 上传文件只能使用 POST GET 传输数据有大小限制 GET 传输的数据类型不灵活:GET是使用url来传输数据,那么比如空格字符以及类似&这样的字符就不方便传输.(当然可以使用发送前 ...

  7. HTML笔记<note1>

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. Spark 作业调度相关术语

    作业(Job):RDD 中由行动操作所生成的一个或多个调度阶段 调度阶段(Stage):每个作业会因为 RDD 间的依赖关系拆分成多组任务集合,称为调度阶段,也叫做任务集(TaskSet).高度阶段的 ...

  9. angularJS的环境搭建--初学

    一  \在这里简单介绍一下Angular-cli的特性: Angular-cli可以快速搭建框架,创建module,service,class,directive等: 有webpack的功能,可以实现 ...

  10. C#基本功之泛型

    一.没有泛型之前 在没有泛型之前,我们是怎么处理不同类型的相同操作的: 示例1 //下面是一个处理string类型的集合类型 public class MyStringList { string[] ...