用数据库保存图片的路径和文件名称,把文件保存在文件夹中.
//保存在数据库中的文件路径
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. 虚拟机安装 deepin Linux 注意事项

    主要要注意下面几点: 一.虚拟机"客户机操作系统"类型 选择"Windows 7 x64" 选择"客户机操作系统"类型,这个选择十分重要,D ...

  2. hashlib,configparser,logging,模块

    一,hashlib模块 算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一 ...

  3. Python函数篇(二)之递归函数、匿名函数及高阶函数

    1.全局变量和局部变量 一般定义在程序的最开始的变量称为函数变量,在子程序中定义的变量称为局部变量,可以简单的理解为,无缩进的为全局变量,有缩进的是局部变量,全局变量的作用域是整个程序,而局部变量的作 ...

  4. Django学习(2)数据宝库

    数据库是一所大宝库,藏着各种宝贝.一个没有数据库的网站,功能有限.在Django中,支持的数据库有以下四种: SQLite3 MySQL PostgreSQL Oracle 其中SQLite3为Dja ...

  5. php加密解密处理类

    [PHP]代码 <?php /*=========================================================== = 版权协议: = GPL (The GN ...

  6. JavaScript学习总结(一)——ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)

    一.JavaScript简介 JavaScript是一种解释执行的脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它遵循ECMAScript标准.它的解释器被称为JavaScript引 ...

  7. pymysql实现MySQL与Python交互

    常见MySQL操作 所需模块: pip3 install pymysql 查询(fetchone,fetchmany,fetchall): import pymysql #连接 con = pymys ...

  8. QT的radioButton组的使用

    在使用Qt的radioButton控件时,会产生一个疑问,如何让你选择的那个radio得到一个数据,进行判断,网上的一些资料有些不全,容易出错. 所以你得做件事,给每个radioButton进行赋初值 ...

  9. Material04 MdListModule模块

    1 在共享模块中导入MdListModule模块 import { NgModule } from '@angular/core'; import { CommonModule } from '@an ...

  10. Linux下实现视频读取(三)---Buffer的准备和数据读取

    前面主要介绍的是:V4L2 的一些设置接口,如亮度,饱和度.曝光时间,帧数,增益.白平衡等.今天看看V4L2 得到数据的几个关键ioctl,Buffer的申请和数据的抓取. 1. 初始化 Memory ...