工欲善其事,必先利其器,坚持才能更好

这篇文章主要是强调怎么使用asp.net上传图片并且能够裁剪,这个功能主要使用在注册信息的时候需要上传头像并且图片格式很大的时候能够把图片裁剪成更小的图片。下面来看一下具体的实现过程。

第一步,首先利用vs创建一个webform页面。

第二步,在uploadimg.aspx中加入一个upload控件,一个上传按钮,一个显示图片的控件,一个重置按钮,一个panel控件。

第三步,点击上传按钮,进入Btnsubmit_Click()事件中,在该方法下写入上传图片的代码。

具体实现代码如下:

 string FileName = string.Empty;
string FilePath = string.Empty;
string Extention = string.Empty;
if (FileUpload1.HasFile)
{
Extention = Path.GetExtension(FileUpload1.FileName).ToLower();
if (Extention == ".jpg" || Extention == ".bmp" || Extention == ".gif" || Extention == ".jpeg" || Extention == ".png")
{
FileName = Guid.NewGuid().ToString() + Extention;
FilePath = Path.Combine(Server.MapPath("~/Images"), FileName);
FileUpload1.SaveAs(FilePath);
PnlCrop.Visible = true;
Imgtocrop.ImageUrl = "~/Images/" + FileName;
}
else
{
lblMsg.ForeColor = Color.Red;
lblMsg.Text = "只允许上传jpg,bmp,gif,jpeg,png的图片格式";
}
}
else
{
lblMsg.ForeColor = Color.Red;
lblMsg.Text = "没有文件上传";
}

第四步,上传完图片之后,下面就应该是裁剪了,这里的裁剪利用jquery实现。因此首先你必须下载裁剪文件所需要的js文件。

下载js的网站http://code.ciaoca.com/jquery/jcrop/,下载完之后解压,找到jquery.Jcrop.js和jquery.Jcrop.css两个文件添加到网站中。

具体实现在页面的头部添加以下代码

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script src="js/jquery.Jcrop.js" type="text/javascript"></script>
<link href="css/jquery.Jcrop.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
$(document).ready(function () {
$('#<%=Imgtocrop.ClientID%>').Jcrop({
onSelect: getAreaToCrop
});
});
function getAreaToCrop(c) {
$('#XCoordinate').val(parseInt(c.x));
$('#YCoordinate').val(parseInt(c.y));
$('#Width').val(parseInt(c.w));
$('#Height').val(parseInt(c.h));
}
</script>

第五步,单击裁剪按钮,进入按钮的单击事件添加裁剪并保存的代码。

具体实现代码如下:

protected void btnCrop_Click(object sender, EventArgs e)
{
string croppedFileName = string.Empty;
string croppedFilePath = string.Empty;
string fileName = Path.GetFileName(Imgtocrop.ImageUrl);
string filePath = Path.Combine(Server.MapPath("~/Images"),fileName);
if (File.Exists(filePath))
{
System.Drawing.Image orgimg = System.Drawing.Image.FromFile(filePath); Rectangle areaToCrop = new Rectangle(Convert.ToInt32(XCoordinate.Value),Convert.ToInt32(YCoordinate.Value),Convert.ToInt32(Width.Value),Convert.ToInt32(Height.Value));
try
{
Bitmap bitmap = new Bitmap(areaToCrop.Width,areaToCrop.Height);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawImage(orgimg,new Rectangle(,,bitmap.Width,bitmap.Height),areaToCrop,GraphicsUnit.Pixel);//按指定大小绘制图像;
}
croppedFileName = "crop_" + fileName;
croppedFilePath = Path.Combine(Server.MapPath("~/Images"), croppedFileName);
bitmap.Save(croppedFilePath);//保存裁剪的图片到Images文件夹
orgimg.Dispose();//释放图片资源
bitmap = null;
File.Delete(filePath);
PnlCrop.Visible = false;
lblMsg.Text = "裁剪成功";
lblMsg.ForeColor = Color.Green;
Imgcroped.ImageUrl = "~/Images/"+croppedFileName; btnReset.Visible = true; }
catch (Exception ex)
{
lblMsg.Text = "异常信息为 " + ex.Message.ToString();
}
finally
{
fileName = string.Empty;
filePath = string.Empty;
croppedFileName = string.Empty;
croppedFilePath = string.Empty;
}
}
}

最后一步添加重置按钮的代码

       protected void btnReset_Click(object sender, EventArgs e)
{
Imgcroped.ImageUrl = "";
lblMsg.Text = string.Empty;
btnReset.Visible = false;
}

下面是最后运行结果

使用asp.net上传图片并且裁剪的方法的更多相关文章

  1. Asp.Net 上传图片并生成高清晰缩略图

    在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...

  2. Asp.Net 上传图片并生成高清晰缩略图(转)

    在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...

  3. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

    在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie ...

  4. 不修改代码就能优化ASP.NET网站性能的一些方法

    阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不 ...

  5. asp.net 手工调用 WS(Get)方法:

    asp.net 手工调用 WS(Get)方法: 通过手工HttpWebRequest,HttpWebResponse来模拟调用.核心代码:string strurl="http://loca ...

  6. 在 ASP.NET 中使用 jQuery.load() 方法

    今天就让我们看看在 ASP.NET 中使用 jQuery.load() 方法来调用 ASP.NET 的方法,实现无刷新的加载数据. 使用 jQuery 的朋友应该知道可以使用 jQuery.load( ...

  7. ASP.NET URL伪静态重写实现方法

    ASP.NET URL伪静态重写实现方法 首先说下,ASP.NET URL伪静态只是将~/a_1.html指向到了~/a.aspx?ID=1,但a.aspx还是真实存在的,你不用./a_1.html来 ...

  8. asp.net中导出Excel的方法

    一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...

  9. ASP.net中网站访问量统计方法代码(在线人数,本月访问,本日访问,访问流量,累计访问)

    一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime),些表的信 ...

随机推荐

  1. HDU5791--Two (DP)

    题意:两个数列a,b,求相同的子序列有多少对,内容相同位置不同也算不同. 题解:dp[i][j]表示a数列前i个数个 b数列前j个数 有多少对 递推方程: dp[i][j] = dp[i-1][j-1 ...

  2. MongoDB系列一(安装)

    一.MongoDB在Windows平台下的安装: 安装包官方下载地址:http://www.mongodb.org/downloads 第一步:下载安装包:如果是win系统,注意是64位还是32位版本 ...

  3. CentOS6.5配置MySQL主从同步

    原文地址:http://www.cnblogs.com/zhongshengzhen/   修改主MySQL的配置 [root@localhost etc] vi /etc/my.cnf 添加以下配置 ...

  4. 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务

    原文地址:http://www.ibm.com/developerworks/cn/web/wa-restful/ 简介: Spring,构建 Java™ 平台和 Enterprise Edition ...

  5. JQuery.Ajax之错误调试帮助信息介绍

    下面是Jquery中AJAX参数详细列表: timeout Number 设置请求超时时间(毫秒).此设置将覆盖全局设置. async Boolean (默认: true) 默认设置下,所有请求均为异 ...

  6. 动网论坛password暴力破解程序代码

    <%  response.buffer=false  '为防止程序陷入死循环,初始化一些最大重试值  Dim MaxPassLen,MaxPassAsc  MaxPassLen=20 'pass ...

  7. Android 3D emulation 架构理解

    Android Emulator 给用户提供  GPU on 选项,意思是利用 Host ( 就是执行 Emulator 的PC机) 的 GPU. 当然PC机必须把 OpenGL 的驱动装好 在实现上 ...

  8. lightoj1104(数学概率与期望)

    题意: 增加一年有n天; 那么至少有几个人,能够保证至少两个人同一天生日的概率大于等于0.5; 思路: 转化一下题意; 就是求全部人生日都不同的概率小于等于0.5(那么至少两个人同一天就是大于等于0, ...

  9. zendserver 安装 ZendDebugger

    网上都找不到支持PHP5.3及以上的Zend Debugger,然后下载了ZendStudio 10.1,发现它内置的PHP 5.3 和 5.4都支持Debugger, 这Debugger就是Zend ...

  10. Vs 2008 解决方案的目录结构设置和管理(转)

    http://blog.csdn.net/lcj_cjfykx/article/details/8632459 MS的这个IDE,实在庞杂得恐怖.从大学开始,我就一直用VC的各个版本写程序至今,细细想 ...