C#上传图片同时生成缩略图,控制图片上传大小。
#region 上传图片生成缩略图
/// <summary>
/// 上传图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void btnUpload_Click(object sender, EventArgs e)
{
//检查上传文件的格式是否有效
if (this.fudPhoto.PostedFile.ContentType.ToLower().IndexOf("image") < )
{
Response.Write("<script>alert('上传图片格式无效!');window.location.href='LES_ApplyTopActivityAdd.aspx';</script>");
return;
}
string FileNmae;
string FileNameS;
string name = fudPhoto.PostedFile.FileName;//客户端文件路径
FileInfo file = new FileInfo(name);
string fileName = file.Name;
string ExtName = getFileExt(fileName).ToUpper();
//生成原图
Byte[] oFileByte = new byte[this.fudPhoto.PostedFile.ContentLength];
System.IO.Stream oStream = this.fudPhoto.PostedFile.InputStream;
System.Drawing.Image oImage = System.Drawing.Image.FromStream(oStream);
int towidth = ;//设置缩略图初始高度
int toheight = ;//设置缩略图初始宽度
int x = ;
int y = ;
int ow = oImage.Width;
int oh = oImage.Height; if (ow == && ow == )
{
//按比例计算出缩略图的宽度和高度 if (((double)oImage.Width / (double)oImage.Height) > ((double)towidth / (double)toheight))
{
oh = oImage.Height;
ow = oImage.Height * towidth / toheight;
y = ;
x = (oImage.Width - ow) / ;
}
else
{
ow = oImage.Width;
oh = oImage.Width * toheight / towidth;
x = ;
y = (oImage.Height - oh) / ;
}
//生成缩略原图
Bitmap tImage = new Bitmap(towidth, toheight);
Graphics g = Graphics.FromImage(tImage);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量插值法
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//设置高质量,低速度呈现平滑程度
g.Clear(Color.Transparent); //清空画布并以透明背景色填充
g.DrawImage(oImage, new Rectangle(, , towidth, toheight), new Rectangle(, , ow, oh), GraphicsUnit.Pixel); FileNmae = DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + "." + ExtName; //保存原图的物理路径
string oFullName = Server.MapPath("/uploadfiles//" + FileNmae); FileNameS = FileNmae + "-S" + ".JPG"; //保存缩略图的物理路径
string tFullName = Server.MapPath("/uploadfiles//" + FileNameS);
try
{
//以JPG格式保存图片
oImage.Save(oFullName, System.Drawing.Imaging.ImageFormat.Jpeg);
tImage.Save(tFullName, System.Drawing.Imaging.ImageFormat.Jpeg); //lbMessage.Text = "提示:文件”" + FileNmae + "“成功上传,并生成”" + FileNameS + "“缩略图,文件类型为:" +
// fudPhoto.PostedFile.ContentType + ",文件大小为:" + fudPhoto.PostedFile.ContentLength + "B";
lbMessage.Text = "提示:文件成功上传,并生成”" + FileNameS + "“缩略图!";
string PIC = FileNmae;
ViewState["pic"] = PIC;
}
catch (Exception ex)
{
throw ex;
}
finally
{
//释放资源
oImage.Dispose();
g.Dispose();
tImage.Dispose();
}
}
else
{
lbMessage.Text = "提示:图片的尺寸应该是640x640";
}
}
private string getFileExt(string fileName)
{
if (fileName.IndexOf(".") == -)
return "";
string[] temp = fileName.Split('.');
return temp[temp.Length - ].ToLower();
}
#endregion
}
如图效果图:

C#上传图片同时生成缩略图,控制图片上传大小。的更多相关文章
- C#上传图片和生成缩略图以及图片预览
因工作需要,上传图片要增加MIME类型验证和生成较小尺寸的图片用于浏览.根据网上代码加以修改做出如下效果图: 前台代码如下: <html xmlns="http://www.w3.or ...
- CKEditor 自主控制图片上传
在ASP.NET中使用CKEditor编辑器,如果想控制图片上传,即把上传的图片路径名存到数据中,可以自定义一个上传功能 首先自定义CKEditor的配置文件 在config.js中添加以下代码,红色 ...
- springmvc上传图片并显示--支持多图片上传
实现上传图片功能在Springmvc中很好实现.现在我将会展现完整例子. 开始需要在pom.xml加入几个jar,分别是: <dependency> <groupId>comm ...
- CKfinder for java详解二:缩略图及图片上传的缩放
我们找到 <thumbs><enabled>true</enabled><url>�SE_URL%_thumbs/</url><dir ...
- Ionic3学习笔记(十二)拍照上传图片以及从相册选择图片上传
本文为原创文章,转载请标明出处 目录 安装插件 导入 app.module.ts 创建 provider 更多 效果图 1. 安装插件 终端运行: ionic cordova plugin add c ...
- dnmp(docker的lnmp)安装WordPress之后图片上传问题 问题:图片上传大小问题解决和 报错413 Request Entity Too Large
首先是提示超过图片尺寸和大小, 最后发现都是图片大小的问题, 需要修改php的最大上传size 修改之后查看php配置 已经生效 但是还是报错, 提示返回不是合法的json, 查看控制台, 报错 ...
- jboss设置图片上传大小
<http-listener name="default" socket-binding="http" max-post-size="10485 ...
- php.ini控制文件上传大小配置项
; Whether to allow HTTP file uploads.file_uploads = On ; Temporary directory for HTTP uploaded files ...
- [上传下载] C# ImageUpload图片上传类教程与源码下载 (转载)
点击下载 ImageUpload.zip 功能如下图片1.设置属性后上传图片,用法如下 /// <summary> /// 图片上传类 /// </summary> //--- ...
随机推荐
- itext poi 学习之旅 (2)创建excel
Computer.java package com.qiang.poi; public class Computer { private int id; private String name; pr ...
- poj3254状压DP入门
G - 状压dp Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:65536KB 64bit ...
- [Unity优化] Unity CPU性能优化
前段时间本人转战unity手游,由于作者(Chwen)之前参与端游开发,有些端游的经验可以直接移植到手游,比如项目框架架构.代码设计.部分性能分析,而对于移动终端而言,CPU.内存.显卡甚至电池等硬件 ...
- js禁止默认的右键菜单或出现自定义右键菜单
1.屏蔽默认的右键菜单 js: document.getElementById('myimg').oncontextmenu=function(){return false;} jquery: $(' ...
- 关于升级到win10后的网络问题
最近我的alienware电脑从win7升级到win10,看到很多网友都有一个问题,那就是网络受限了, 基本看了很多百度到的,方法基本都不是很有用,我看到了一个网友的办法完美解决了我机器上的网络问题, ...
- fiddler使用之坑
今天一上午都在搞fiddler,之前可以抓到浏览器的请求,今天突然不行了,弄得我花一上午时间去设置浏览器代理的事情,遇到各种各样的问题,现将解决办法记录如下: 1.原来fiddler安装在E盘中,安装 ...
- ubuntu12.04下同步cm10源码(个人记录,当作笔记)
环境:AMD N850,4G,ubuntu12.04 x64, 老规矩,先是各种依赖: sudo apt-get install git-core gnupg flex bison python ra ...
- lua好久没有用了
lua好久没有用了, 最近用python有点多,现在用web.py搞个简单的页面来作通讯录,没美工,很纯白的, 无聊啊,准备去睡了,刚刚百度完lua的一些资料呢, google用不了,真悲剧啊, TM ...
- 安卓handler.post问题
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV ...
- Android学习之AndroidManifest.xml清单之<uses-feature>
无意之中看了几个小时的官方英文文档,关于<uses-feature>的介绍.有必要在这里记录一下,应该有很多人不知道<uses-feature>到底是做什么用的,因为我们平时根 ...