#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. UML基础知识

    UML:Unified Modeling Language,即统一建模语言.是一种图形化的建模语言标准. 如上图,UML可以帮助我们做软件需求分析和软件设计两方面的工作,在不同的应用场景中,UML的一 ...

  2. C#SaveFileDialog的使用

    SaveFileDialog sfd = new SaveFileDialog(); //默认打开的路径 sfd.InitialDirectory = "C:\\Users\\Adminis ...

  3. jQuery中对未来的元素绑定事件

    对未来的元素绑定事件不能用bind, 1.可以用live代替,但是要注意jquery的版本,根据官方文档,从1.7开始就不推荐live和delegate了,1.9里就去掉live了. 2.推荐用on代 ...

  4. 绘制数据图表的又一利器:C3.js

  5. Repeater绑定数据库

    前台: <table width="> <tr> <td class="tr1"> <asp:Label Text=" ...

  6. SalutJs

    SalutJs 前言 卤煮在公司之初接触到的是一个微信APP应用.前端技术采用的是Backbone+zepto等小型JS类库.在项目开发之初,这类中小型的项目采用这两种库可以满足基本的需求.然而,随着 ...

  7. 基于Http原理实现Android的图片上传和表单提交

    版权声明:本文由张坤  原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/794875001483009140 来源:腾云阁  ...

  8. Oracle查询笔记

    -- tanslate(str,from_str,to_str) -- 将str中的from_str替换成to_str select translate('hello','e','o') t from ...

  9. SSH本地端口转发

    也是在公司常用的命令,还没有将EXPECT和SPAWN结合好,先用着: 带证书验证远程登陆的. (从公司内网服务器直接跳到外网服务器的内网端口) ssh -C -f -N -g -i private_ ...

  10. 为什么Application_BeginRequest会执行两次

       大家也看到了,很奇怪的是我们明明就请求了一个页面,页面中也没有其他的图片请求.为什么Application_BeginRequest会被执行了两次呢?!既然他请求,那我们看看他到底在请求什么就是 ...