首页 > C# webform上传图片并生成缩略图

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

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

  1  void UpImgs()
  2     {
  3         if (FileUpload1.HasFile)
  4         {
  5             string fileContentType = FileUpload1.PostedFile.ContentType;
  6             if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/pjpeg")
  7             {
  8                 string name = FileUpload1.PostedFile.FileName; // 客户端文件路径
  9 
 10                 FileInfo file = new FileInfo(name);
 11                 //string fileName = CreatFileName(file.Name)+"_"+file.Name; // 文件名称
 12                 //string fileName_s = "s_" + CreatFileName(file.Name) + "_" + file.Name; // 缩略图文件名称
 13 
 14                 string fileName = CreatFileName(file.Name); // 文件名称
 15                 string fileName_s = "s_" + CreatFileName(file.Name); // 缩略图文件名称
 16 
 17 
 18                 string webFilePath = Server.MapPath("../file/" + fileName); // 服务器端文件路径
 19                 string webFilePath_s = Server.MapPath("../file/" + fileName_s);  // 服务器端缩略图路径
 20 
 21 
 22                 string dbname = "~/file/" + fileName;//存放到http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库" target='_blank' style='color:#df3434; font-weight:bold;'>数据库里的相对路径
 23                 string dbnames = "~/file/" + fileName_s;//存放到数据库里的相对路径
 24 
 25                 if (!File.Exists(webFilePath))
 26                 {
 27                     try
 28                     {
 29                         FileUpload1.SaveAs(webFilePath); // 使用 SaveAs 方法保存文件
 30                         MakeThumbnail(webFilePath, webFilePath_s, 200, 160, "Cut"); // 生成缩略图方法
 31                         //Label1.Text = "提示:文件“" + fileName + "”成功上传,并生成“" + fileName_s + "”缩略图,文件类型为:" + FileUpload1.PostedFile.ContentType + ",文件大小为:" + FileUpload1.PostedFile.ContentLength + "B";
 32                         Label1.Text = "提示:文件“" + dbname + "”成功上传,并生成“" + dbnames + "”缩略图,文件类型为:" + FileUpload1.PostedFile.ContentType + ",文件大小为:" + FileUpload1.PostedFile.ContentLength + "B";
 33 
 34 
 35                         File.Delete(webFilePath);//删除源文件,在这我把源文件删了,只保留了缩小后的图片
 36 
 37 
 38 
 39                     }
 40                     catch (Exception ex)
 41                     {
 42                         Label1.Text = "提示:文件上传失败,失败原因:" + ex.Message;
 43 
 44                     }
 45                 }
 46                 else
 47                 {
 48                     Label1.Text = "提示:文件已经存在,请重命名后上传";
 49 
 50                 }
 51             }
 52             else
 53             {
 54                 Label1.Text = "提示:文件类型不符";
 55 
 56             }
 57         }
 58     }
 59     /**//// 
 60 /// 生成缩略图
 61 /// 
 62 /// 源图路径(物理路径)
 63 /// 缩略图路径(物理路径)
 64 /// 缩略图宽度
 65 /// 缩略图高度
 66 /// 生成缩略图的方式 
 67     public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
 68     {
 69         System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
 70 
 71         int towidth = width;
 72         int toheight = height;
 73 
 74         int x = 0;
 75         int y = 0;
 76         int ow = originalImage.Width;
 77         int oh = originalImage.Height;
 78 
 79         switch (mode)
 80         {
 81             case "HW"://指定高宽缩放(可能变形) 
 82                 break;
 83             case "W"://指定宽,高按比例 
 84                 toheight = originalImage.Height * width / originalImage.Width;
 85                 break;
 86             case "H"://指定高,宽按比例
 87                 towidth = originalImage.Width * height / originalImage.Height;
 88                 break;
 89             case "Cut"://指定高宽裁减(不变形) 
 90                 if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
 91                 {
 92                     oh = originalImage.Height;
 93                     ow = originalImage.Height * towidth / toheight;
 94                     y = 0;
 95                     x = (originalImage.Width - ow) / 2;
 96                 }
 97                 else
 98                 {
 99                     ow = originalImage.Width;
100                     oh = originalImage.Width * height / towidth;
101                     x = 0;
102                     y = (originalImage.Height - oh) / 2;
103                 }
104                 break;
105             default:
106                 break;
107         }
108 
109         //新建一个bmp图片
110         System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
111 
112         //新建一个画板
113         System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
114 
115         //设置高质量插值法
116         g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
117 
118         //设置高质量,低速度呈现平滑程度
119         g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
120 
121         //清空画布并以透明背景色填充
122         g.Clear(System.Drawing.Color.Transparent);
123 
124         //在指定位置并且按指定大小绘制原图片的指定部分
125         g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
126         new System.Drawing.Rectangle(x, y, ow, oh),
127         System.Drawing.GraphicsUnit.Pixel);
128 
129         try
130         {
131             //以jpg格式保存缩略图
132             bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
133         }
134         catch (System.Exception e)
135         {
136             throw e;
137         }
138         finally
139         {
140             originalImage.Dispose();
141             bitmap.Dispose();
142             g.Dispose();
143         }
144     }
145 
146     string CreatFileName(string fileName)
147     {
148 
149         DateTime now = DateTime.Now;
150 
151         string str =
152 
153             now.Year.ToString() + 
154 
155              now.Month.ToString() + 
156 
157              now.Day.ToString() + 
158 
159              now.Hour.ToString() + 
160 
161              now.Minute.ToString() + 
162 
163              now.Second.ToString() + 
164 
165              fileName;
166 
167         return str;
168 
169     }

 

转载于:https://www.cnblogs.com/felix-wang/p/6255313.html

更多相关:

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...

  • importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;//结果与DES算...

  • 题目:替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 解题: 时间复杂度:O(n) 空间复杂度:O(n) class Solution { public:s...

  • 在C++11标准库中,string.h已经添加了to_string方法,方便从其他类型(如整形)快速转换成字面值。 例如: for (size_t i = 0; i < texArrSize; i++)RTX_Shader.SetInt(string("TexArr[") + to_string(i) + "]", 7 + i);...

  • Ubuntu 14.04安装并升级之后,变成楷体字体非常难看,我昨天搞了一晚上,终于理了个头绪,这里整理一下。 经过网上调研,大家的一致看法是,使用开源字体库文泉驿的微黑字体效果比较理想,甚至效果不输windows平台的雅黑字体。下面我打算微黑来美化Ubuntu 14.04. 1.安装文泉驿微黑字体库 sudo aptitude...

  • 使用string时发现了一些坑。 我们知道stl 容器并不是线程安全的,所以在使用它们的过程中往往需要一些同步机制来保证并发场景下的同步更新。 应该踩的坑还是一个不拉的踩了进去,所以还是记录一下吧。 string作为一个容器,随着我们的append 或者 针对string的+ 操作都会让string内部的数据域动态增加,而动态增加的...