用数据库保存图片的路径和文件名称,把文件保存在文件夹中.
//保存在数据库中的文件路径
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. hotspot虚拟机的调试

    3这篇文章,怎么说呢.是踩了很多坑得出来了,也是在自己快要崩溃的时候得出来了的. 连续踩了差不多10来个小时的坑,还好是出来了. 这篇文章是调试虚拟机的,其实网上也能找到一些文章,但是每个人的环境不一 ...

  2. C#设计模式之十八中介者模式(Mediator Pattern)【行为型】

    一.引言 今天我们开始讲“行为型”设计模式的第五个模式,该模式是[中介者模式],英文名称是:Mediator Pattern.还是老套路,先从名字上来看看.“中介者模式”我第一次看到这个名称,我的理解 ...

  3. CATransition

    CATransition *transition = [CATransition animation];    transition.duration = 1.0f;         /* 间隔时间* ...

  4. base64位加密解密

    1.base64位加密base64是用于传输8Bit字节代码,由上图的编码表可以知道,编码后的内容只包含这64个字符类型,所以称为base64编码 2.编码过程 : 首先将待编码的内容转换成8位二进制 ...

  5. UVA 1508 - Equipment dp状态压缩

    题意:  已知n个5元组,从中选出k组,使得这些组中5个位置,每个位置上最大数之和最大. 分析:当k>5时,就是n个5元组最大的数之和,当k<5时,就当做5元组,状态压缩,用00000表示 ...

  6. spring框架的一些技术总结

    纵观现在互联网行业,java的地位依然不可动摇,因为java拥有着的众多开发人员和适用性广,技术与解决技术大部分开源等特点,因此java依然是众多众多开发行业作为互联网开发的首选,而说到开发,我们就不 ...

  7. JVM内存模型及垃圾回收的研究总结

    Java内存模型 总的来说就分为两个区域,堆内存(Heap)和非堆内存(No-Heap),非堆内存又称为永久代(Permanent),永久的意思其实是针对于垃圾回收器来说的,表示这部分内容不需要回收. ...

  8. 使用.Net Core+EF7 完成CodeFirst

    emmm,本来想着用Core做一个小项目玩玩的,然后肯定是要用到数据库的, 然后想,啊,要不用CodeFirst,感觉很腻害的样子,于是,一脸天真无邪的我就踏入了一个深不见底的天坑... 本来想着,应 ...

  9. tolua++实现lua层调用c++技术分析

    tolua++技术分析 cocos2dx+lua 前言 一直都使用 cocos2dx + lua 进行游戏开发,用 Lua 开发可以专注于游戏逻辑的实现,另外一方面可以实现热更新:而且 lua 是一个 ...

  10. 最短路算法之Dijkstra算法通俗解释

    Dijkstra算法 说明:求解从起点到任意点的最短距离,注意该算法应用于没有负边的图. 来,看图. 用邻接矩阵表示 int[][] m = { {0, 0, 0, 0, 0, 0}, {0, 0, ...