一、介绍:图片的上传直接使用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图片上传和截取的更多相关文章

  1. asp.net图片上传实例

    网站后台都需要有上传图片的功能,下面的例子就是实现有关图片上传. 缺点:图片上传到本服务器上,不适合大量图片上传. 第一.图片上传,代码如下: xxx.aspx 复制代码代码如下: <td cl ...

  2. Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)

    写在前面 本文地址:http://www.cnblogs.com/yilezhu/p/9315644.html 作者:yilezhu 上一篇关于Asp.Net Core Web Api图片上传的文章使 ...

  3. ASP.NET 图片上传工具类 upload image简单好用功能齐全

    使用方法: UploadImage ui = new UploadImage(); /***可选参数***/ ui.SetWordWater = "哈哈";//文字水印 // ui ...

  4. asp.net图片上传及删除

    方法一:UploadImage cetFU = new UploadImage(); if (cetFU.UpFile(FileUpload1, "teacher_picture" ...

  5. asp.net图片上传代码

    前端: <form action="/ImageUpload.ashx" method="post" enctype="multipart/fo ...

  6. ASP.NET图片上传(配合jquery.from.js 插件)

    前端: js:        function AjaxKouBeiShopEdit() { var options = {                dataType: "json&q ...

  7. MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器

    MVC图片上传.浏览.删除   1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...

  8. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  9. ASP.NET MVC图片上传前预览

    回老家过春节,大半个月,在家的日子里,吃好睡好,人也长了3.5Kg.没有电脑,没有网络,无需写代码,工作上相关的完全放下......开心与父母妻儿过个年,那样的生活令Insus.NET现在还在留恋.. ...

随机推荐

  1. The Preliminary Contest for ICPC Asia Xuzhou 2019

    A:Who is better? 题目链接:https://nanti.jisuanke.com/t/41383 题意: 类似于有N个石子,先手第一次不能拿完,每次后手只能拿 1 到 前一次拿的数量* ...

  2. Web基础了解版04-XML-Tomcat-Http

    XML 什么是XML - Tomcat - Http XML:eXtensible Markup Language (可扩展标记语言). XML 是一种标记语言,很类似 HTML. XML 的设计宗旨 ...

  3. Caffe源码-SyncedMemory类

    SyncedMemory类简介 最近在阅读caffe源码,代码来自BVLC/caffe,基本是参照网络上比较推荐的 Blob-->Layer-->Net-->Solver 的顺序来分 ...

  4. 【转载】img图片之间的间距问题

    [问题]页面中如果有多张图片,那么图片之间会有一些间距,在某些情况下(如切好的图片再次拼接),在显示上就会出现一些问题.效果如下: 解决方案参看以下文章 img图片之间的间距问题

  5. FCC---CSS Flexbox: Use the flex-direction Property to Make a Column

    The last two challenges used the flex-direction property set to row. This property can also create a ...

  6. SAP S4HANA TR传输之操作

    SAP S4HANA TR传输之操作 事务代码: STMS_IMPORT, 选中请求,点击漏斗按钮, 输入要传输的TR(可以多个),然后回车, 鼠标单击请求号,按F9, 然后传输, 点击按钮'是',系 ...

  7. Android 插件化开发(二):加载外部Dex文件

    在学习Java反射的技术后,我们可以开始更深一步的探究插件化开发了.首先先讲一下Android App的打包流程,然后我们通过一个简单的例子 —— 实现插件化加载外部Dex来完成初级的插件化开发的探索 ...

  8. sql server 字符数据类型

    SQL Server 中字符类型包括varchar.char.text等.主要用于存储字符数据.varchar和char类型的主要区别在于数据填充.例如,一个列名为FirstName且数据类型为var ...

  9. python网络编程:UDP方式传输数据

    UDP --- 用户数据报协议(User Datagram Protocol),是一个无连接的简单的面向数据报的运输层协议. UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能 ...

  10. Java生鲜电商平台-系统异常状态的设计与架构(APP应用或者生鲜小程序)

    Java生鲜电商平台-系统异常状态的设计与架构 说明:在实际开发Java生鲜电商平台的时候,异常状态的设计关系着整体系统的性能问题,架构设计,以及稳定性方面,对此,我根据实际的业务场景,进行了系统设计 ...