用数据库保存图片的路径和文件名称,把文件保存在文件夹中.
//保存在数据库中的文件路径
ArrayList arrFilePath=new ArrayList();
arrFilePath=myCommonMethod.UploadPic(Files,"/UpLoads/UpPicture/");
//获取文件名称
string fileName=arrFilePath[0].SubString(arrFilePath[0].LastIndexOf("/")+1);
//源图路径(物理路径)
originalImagePath=Request.PhysicalApplicationPath+"/UpLoads/UpPicture/"+fileName;
//缩略图路径(物理路径)
thumbnailPath     =Request.PhysicalApplicationPath+"/UpLoads/UpPicture/"+"thumb_"+fileName;
//调用生成缩略图方法
this.MakeThumbnail(originalImagePath,thumbnailPath,120,150, strMode out outthumbnailPath);

#region  生成缩略图 
  ///<summary> 
  /// 生成缩略图 
  /// </summary> 
  /// <param name="originalImagePath">源图路径(物理路径)</param> 
  /// <param name="thumbnailPath">缩略图路径(物理路径)</param> 
  /// <param name="width">缩略图宽度</param> 
  /// <param name="height">缩略图高度</param> 
  /// <param name="mode">生成缩略图的方式</param>     
  public  void MakeThumbnail(string originalImagePath,  string thumbnailPath, int width, int height, string mode out string outthumbnailPath) 
  { 
   System.Drawing.Image originalImage =System.Drawing.Image.FromFile(originalImagePath); 
            
   int towidth = width; 
   int toheight = height; 
        
   int x = 0; 
   int y = 0; 
   int ow = originalImage.Width; 
   int oh = originalImage.Height;

switch (mode) 
   {         
    case "HW"://指定高宽缩放(可能变形)                 
     break; 
    case "W"://指定宽,高按比例                     
     toheight = originalImage.Height * width/originalImage.Width; 
     break; 
    case "H"://指定高,宽按比例 
     towidth = originalImage.Width * height/originalImage.Height;                     
     break;         
    case "Cut"://指定高宽裁减(不变形)                 
     if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight) 
     { 
      oh = originalImage.Height; 
      ow = originalImage.Height*towidth/toheight; 
      y = 0; 
      x = (originalImage.Width - ow)/2; 
     } 
     else 
     { 
      ow = originalImage.Width; 
      oh = originalImage.Width*height/towidth; 
      x = 0; 
      y = (originalImage.Height - oh)/2; 
     } 
     break;                     
    default : 
     break; 
   }

//新建一个bmp图片     System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth,toheight);

//新建一个画板     Graphics g = System.Drawing.Graphics.FromImage(bitmap);

//设置高质量插值法     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

//设置高质量,低速度呈现平滑程度     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

//清空画布并以透明背景色填充     g.Clear(Color.Transparent);

//在指定位置并且按指定大小绘制原图片的指定部分     g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),      new Rectangle(x, y, ow,oh),      GraphicsUnit.Pixel);

try     {                  //以jpg格式保存缩略图      bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);      outthumbnailPath=thumbnailPath;    }     catch(System.Exception e)     {      throw e;     }     finally     {      originalImage.Dispose();      bitmap.Dispose();                              g.Dispose();     }    }

C#生成缩略图 (通用模式)的更多相关文章

  1. yii php 图片上传与生成缩略图

    今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图              ($pic_action_url = $this->createAbsoluteUrl('h ...

  2. asp.net生成缩略图

    /// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...

  3. 黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  4. Java生成缩略图Thumbnailator(转载)

    转自(http://rensanning.iteye.com/blog/1545708) Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩 ...

  5. Java生成缩略图之Thumbnailator

    Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持 ...

  6. PHP生成缩略图、加水印

    <?php class ThumbWaterImages{ /** * 生成缩略图/加水印 * classname ThumbWaterImages * datetime:2015-1-15 * ...

  7. .NET 等宽、等高、等比例、固定宽高生成缩略图 类

    #region 根据原图片生成等比缩略图 /// <summary> /// 根据源图片生成缩略图 /// </summary> /// <param name=&quo ...

  8. C# webform上传图片并生成缩略图

    其实里面写的很乱,包括修改文件名什么的都没有仔细去写,主要是想记录下缩略图生成的几种方式 ,大家明白就好! void UpImgs() { if (FileUpload1.HasFile) { str ...

  9. phpcms v9图片生成缩略图变成黑色解决方法

    今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...

随机推荐

  1. 【前端工具】Chrome 扩展程序的开发与发布 -- 手把手教你开发扩展程序

    关于 chrome 扩展的文章,很久之前也写过一篇.清除页面广告?身为前端,自己做一款简易的chrome扩展吧. 本篇文章重在分享一些制作扩展的过程中比较重要的知识及难点. 什么是 chrome 扩展 ...

  2. Python测试开发之---string

    string.letters 所有的大小写字母 >>> print string.lettersabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ ...

  3. 翻译连载 | 附录 C:函数式编程函数库-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  4. 域名和ip不能访问的原因

    centos的话可能默认可能会有firewalld,可以执行 systemctl stop firewalld systemctl disable firewalld 禁用后在看看,前提都是域名得备案 ...

  5. IDEA 无法运行Junit, 报错Class not found xxxx Empty test suite.

    网上搜了一圈没找到答案, 最后才发现是因为testmodule没有把class编译到主代码编译的路径.

  6. Android ListView与RecycleView的对比使用

    ListView,就如其名,是用来显示列表的一种View,而RecycleView,是其的加强版,今天带来的是这两个几乎具有相同的功能的对比使用 先从ListView说起吧 ListView: 1.在 ...

  7. this的取值

    在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了. 情况1:构造函数 function Foo(){ this.name="王福朋" this ...

  8. 如何使用 Secret?- 每天5分钟玩转 Docker 容器技术(108)

    我们经常要向容器传递敏感信息,最常见的莫过于密码了.比如: docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql 在启动 MySQL 容器时我 ...

  9. 《Javascript_Dom 编程艺术》(第2版)读书笔记

    第1章 Javascript 简史 Dom : 平稳退化.渐进增强,以用户为中心的设计 第2章 Javascript 语法 1.程序设计语言分为:解释性(javascript)和编译型(java,C+ ...

  10. tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 8位硬件ECC

    这节我们实现nand的ecc,保存环境变量到nand flash 中.然后把我们之前的led灯烧写到nand flash 中.开机启动.在 tiny210.h 中定义宏 CONFIG_S5PV210_ ...