#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#上传图片同时生成缩略图,控制图片上传大小。的更多相关文章

  1. C#上传图片和生成缩略图以及图片预览

    因工作需要,上传图片要增加MIME类型验证和生成较小尺寸的图片用于浏览.根据网上代码加以修改做出如下效果图: 前台代码如下: <html xmlns="http://www.w3.or ...

  2. CKEditor 自主控制图片上传

    在ASP.NET中使用CKEditor编辑器,如果想控制图片上传,即把上传的图片路径名存到数据中,可以自定义一个上传功能 首先自定义CKEditor的配置文件 在config.js中添加以下代码,红色 ...

  3. springmvc上传图片并显示--支持多图片上传

    实现上传图片功能在Springmvc中很好实现.现在我将会展现完整例子. 开始需要在pom.xml加入几个jar,分别是: <dependency> <groupId>comm ...

  4. CKfinder for java详解二:缩略图及图片上传的缩放

    我们找到 <thumbs><enabled>true</enabled><url>�SE_URL%_thumbs/</url><dir ...

  5. Ionic3学习笔记(十二)拍照上传图片以及从相册选择图片上传

    本文为原创文章,转载请标明出处 目录 安装插件 导入 app.module.ts 创建 provider 更多 效果图 1. 安装插件 终端运行: ionic cordova plugin add c ...

  6. dnmp(docker的lnmp)安装WordPress之后图片上传问题 问题:图片上传大小问题解决和 报错413 Request Entity Too Large

    首先是提示超过图片尺寸和大小, 最后发现都是图片大小的问题, 需要修改php的最大上传size 修改之后查看php配置  已经生效  但是还是报错, 提示返回不是合法的json,  查看控制台, 报错 ...

  7. jboss设置图片上传大小

    <http-listener name="default" socket-binding="http" max-post-size="10485 ...

  8. php.ini控制文件上传大小配置项

    ; Whether to allow HTTP file uploads.file_uploads = On ; Temporary directory for HTTP uploaded files ...

  9. [上传下载] C# ImageUpload图片上传类教程与源码下载 (转载)

    点击下载 ImageUpload.zip 功能如下图片1.设置属性后上传图片,用法如下 /// <summary> /// 图片上传类 /// </summary> //--- ...

随机推荐

  1. Querylayer(查询图层) - 浅谈

    Querylayer(查询图层)是通过 SQL 查询定义的图层或独立表.通过 Querylayer 可将空间信息和非空间信息都存储在DBMS 中,从而使这些信息可以轻松地整合到 ArcMap 中的各 ...

  2. zepto源码研究 - deferred.js(jquery-deferred.js)

    简要:zepto的deferred.js 并不遵守promise/A+ 规范,而在jquery v3.0.0中的defer在一定程度上实现了promise/A+ ,因此本文主要研究jquery v3. ...

  3. struct可以拥有class般的构造函数

    struct A { int a, b; A(int x, int y) :a(x), b(y){} }; int main() { A a(1, 2); cout << a.a < ...

  4. Codeforces Round #276 (Div. 1)

    a. 给俩数, 求他俩之间二进制数中1最多的,有多个输出最小的: 贪心,从小到大加能加就加,最后可能碰到一个不能加了但是当前数比l小,那么就加上这个数,然后从大到小,能减就减,见到符合条件 #incl ...

  5. django TypeError: 'module' object is not callable

    原因:导入模块时直接把模块当函数使用 from rest_framework import reverse #import reverse module @api_view(("GET&qu ...

  6. 消息机制 - Windows程序设计(SDK)004

    消息机制 让编程改变世界 Change the world by program 内容节选: 我们来回顾一下,窗口是怎么从代码中诞生出来的? 1. 首先我们是通过给 WNDCLASS 窗口类结构各个成 ...

  7. ucos 创建 空闲任务的目的

    几乎任何操作系统都需要有空闲任务. 因为CPU(提供CPU级休眠的不算)没办法停下来,尤其是嵌入式系统这一块. CPU停下来的唯一情况就是断电了,而要保持操作系统任何时候都能及时的对外做出响应,就必须 ...

  8. Hibernate学习笔记--使用ThreadLocal

    参考资料: http://blog.sina.com.cn/s/blog_7ffb8dd5010146i3.html http://lavasoft.blog.51cto.com/62575/5192 ...

  9. Xcode6中自动布局autolayout和sizeclass的使用

    Xcode6中自动布局autolayout和sizeclass的使用   一.关于自动布局(Autolayout) 在Xcode中,自动布局看似是一个很复杂的系统,在真正使用它之前,我也是这么认为的, ...

  10. Function 语意学

    C++支持三种类型的member functions: static.nonstatic和virtual,每一种类型调用方式都不相同. 一 nostatic members functions 1 调 ...