ASP.NET图片上传和截取
一、介绍:图片的上传直接使用ajax就可以了,截取图片的话使用到Jcrop插件。
图片上传资料:https://www.jb51.net/article/87654.htm
截取图片插件:http://code.ciaoca.com/jquery/jcrop/
前端
添加引用
<script src="../js/jquery.min.js"></script>
<link href="../Css/jquery.Jcrop.min.css" rel="stylesheet" />
<script src="../js/jquery.Jcrop.min.js"></script>
HTML代码
<input type="file" name="photo" id="photo" value="" placeholder="免冠照片">
<input type="button" onclick="postData();" value="下一步" name="" style="width: 100px; height: 30px;">
<img id="showPhoto" />
JavaScript代码
<script type="text/javascript">
//文件上传方法
function postData() {
var formData = new FormData();
//上传文件的变量名
formData.append("Filedata", $("#photo")[0].files[0]);
$.ajax({
url: "/ashx/upload.ashx?action=upload", /*接口域名地址*/
type: 'post',
data: formData,
contentType: false,
processData: false,
success: function (res) {
$("#showPhoto").attr("src", res);
CutPhoto();
}
})
}
//截图
function CutPhoto() {
var jcropApi;
$('#showPhoto').Jcrop({
//选框选定时的事件
onSelect: function (c) {
$.ajax({
url: "/ashx/upload.ashx?action=cut",
type: "post",
data: {
"x": c.x,
"y": c.y,
"width": c.w,
"height": c.h,
"imgSrc": $("#showPhoto").attr("src")
},
success: function () { }
});
},
allowSelect: true,//允许新选框
baseClass: 'jcrop'
}, function () {
jcropApi = this;
});
}
</script>
后台
添加一个一般处理程序upload.ashx
代码
public class upload : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//判断action
string action = context.Request["action"];
if (action == "upload")
{
Upload(context);
}
else if (action == "cut")
{
CutPhoto(context);
}
} public bool IsReusable
{
get
{
return false;
}
}
/// <summary>
/// 文件上传
/// </summary>
private void Upload(HttpContext context)
{
//获取文件
HttpPostedFile file = context.Request.Files["Filedata"];
//判断文件是否为空
if (file != null)
{
//获取文件名
string fileName = Path.GetFileName(file.FileName);
//获取文件扩展名
string fileExt = Path.GetExtension(fileName);
//判断文件扩展名是否正确
if (fileExt == ".jpg")
{
//获得文件路径
string filePath = "/UploadFile/" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day;
//判断文件是否存在
if (!System.IO.Directory.Exists(context.Request.MapPath(filePath)))
{
//不存在则创建
Directory.CreateDirectory(context.Request.MapPath(filePath));
}
//生成新的文件名
string newFileName = filePath + "/" + Guid.NewGuid() + fileExt;
//保存文件
file.SaveAs(context.Request.MapPath(newFileName));
//返回文件路径
context.Response.Write(newFileName);
}
}
}
/// <summary>
/// 截取图片
/// </summary>
/// <param name="context"></param>
private void CutPhoto(HttpContext context)
{
int x = Convert.ToInt32(context.Request["x"]);
int y = Convert.ToInt32(context.Request["x"]);
int width = Convert.ToInt32(context.Request["width"]);
int height = Convert.ToInt32(context.Request["height"]);
string imgSrc = context.Request["imgSrc"];
//创建画布
using (Bitmap bitmap = new Bitmap(width, height))
{
//创建画笔
using (Graphics g = Graphics.FromImage(bitmap))
{
//创建图片
using (Image img = Image.FromFile(context.Request.MapPath(imgSrc)))
{
//截取图片
//第一个参数:要画的图片
//第二个参数:画多大
//第三个参数:画图片的哪个部分
g.DrawImage(img, new Rectangle(, , width, height), new Rectangle(x, y, width, height), GraphicsUnit.Pixel);
string newImgName = Guid.NewGuid().ToString()+".jpg";
string dir = "/UploadFile/" + newImgName;
bitmap.Save(context.Request.MapPath(dir),System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
}
}
ASP.NET图片上传和截取的更多相关文章
- asp.net图片上传实例
网站后台都需要有上传图片的功能,下面的例子就是实现有关图片上传. 缺点:图片上传到本服务器上,不适合大量图片上传. 第一.图片上传,代码如下: xxx.aspx 复制代码代码如下: <td cl ...
- Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)
写在前面 本文地址:http://www.cnblogs.com/yilezhu/p/9315644.html 作者:yilezhu 上一篇关于Asp.Net Core Web Api图片上传的文章使 ...
- ASP.NET 图片上传工具类 upload image简单好用功能齐全
使用方法: UploadImage ui = new UploadImage(); /***可选参数***/ ui.SetWordWater = "哈哈";//文字水印 // ui ...
- asp.net图片上传及删除
方法一:UploadImage cetFU = new UploadImage(); if (cetFU.UpFile(FileUpload1, "teacher_picture" ...
- asp.net图片上传代码
前端: <form action="/ImageUpload.ashx" method="post" enctype="multipart/fo ...
- ASP.NET图片上传(配合jquery.from.js 插件)
前端: js: function AjaxKouBeiShopEdit() { var options = { dataType: "json&q ...
- MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器
MVC图片上传.浏览.删除 1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...
- Asp.Net Mvc 使用WebUploader 多图片上传
来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...
- ASP.NET MVC图片上传前预览
回老家过春节,大半个月,在家的日子里,吃好睡好,人也长了3.5Kg.没有电脑,没有网络,无需写代码,工作上相关的完全放下......开心与父母妻儿过个年,那样的生活令Insus.NET现在还在留恋.. ...
随机推荐
- 聊聊 Python 的内置电池
本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/XzCqoCvcpFJt4A-E4WMqaA (一) 最近,我突然想到一 ...
- Sqlite—插入语句(Insert)
SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行. 基本语法:INSERT INTO TABLE_NAME VALUES (value1,value2,value3, ...
- [洛谷P1967][题解]货车运输
题目 这道题让我们求最小限重的最大值 显然可以先求出最大生成树,然后在树上进行操作 因为如果两点之间有多条路径的话一定会走最大的,而其他小的路径是不会被走的 然后考虑求最小权值 可以采用倍增求LCA, ...
- ubuntu 18.04 安装并配置adb
获取最新的adb包 wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip 将软件包解压到指定位置 ...
- IT兄弟连 HTML5教程 DIV+CSS网页标准化布局 小结及习题
小结 DIV+CSS布局页面的优势:表现和内容相分离.代码简洁,提高页面浏览速度.易于维护和改版.提高搜索引擎对网页的索引效率.每个HTML元素都可以看作一个区块,类似于装了东西的盒子,称为盒子模式. ...
- python中错误、调试、单元测试、文档测试
错误分为程序的错误和由用户错误的输入引起的错误,此外还有因为各种各样意外的情况导致的错误,比如在磁盘满的时候写入.从网络爬取东西的时候,网络断了.这类错误称为异常 错误处理 普通的错误处理机制就是在出 ...
- 5.Ansible Jinja2 模板
1.jinja2渲染NginxProxy配置文件 jinja2 房屋建筑设计固定的 jinja2模板与Ansible关系 Ansible如何使用jinja2模板 template模块 拷贝文件? te ...
- Iterable与Collection源码学习
接口 - Iterable<T> - 可迭代 描述 实现本接口的类,其对象可以被迭代.同时支持forEach语法 方法 Iterator<T> iterator() 类型 抽象 ...
- Redis Python(二)
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.NoSQL(Not only SQL)1.泛指非关系数据库2.不支持SQL语法3.存储结构与传统的关系型数据库 ...
- python yield关键词使用总结
python yield关键词使用总结 by:授客 QQ:1033553122 测试环境 win10 python 3.5 yield功能简介 简单来说,yield 的作用就是把一个函数变成一个 ge ...