一、介绍:图片的上传直接使用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. AOP框架Dora.Interception 3.0 [3]: 拦截器设计

    对于所有的AOP框架来说,多个拦截器最终会应用到某个方法上.这些拦截器按照指定的顺序构成一个管道,管道的另一端就是针对目标方法的调用.从设计角度来将,拦截器和中间件本质是一样的,那么我们可以按照类似的 ...

  2. CAD绘图效率低?教你4个CAD绘图技巧,绘图效率提升十倍

    CAD绘图一直是一个谜一样的存在,说它简单吧,很多人都无法完全精通,说它难吧,很多人也都自学成才了. 如何学好CAD绘图是个难题,但是老话说的好,只要思想不滑坡,办法总比困难多,掌握以下这些CAD绘图 ...

  3. 安卓JNI精细化讲解,让你彻底了解JNI(二):用法解析

    目录 用法解析 ├── 1.JNI函数 │ ├── 1.1.extern "C" │ ├── 1.2.JNIEXPORT.JNICALL │ ├── 1.3.函数名 │ ├── 1 ...

  4. Cortex-A7处理器算数运算指令和逻辑运算指令

      汇编中也可以进行算术运算, 比如加减乘除,常用的运算指令用法如表所示: 常用运算指令 在嵌入式开发中最常会用的就是加减指令,乘除基本用不到. 我们用 C 语言进行CPU 寄存器配置的时候常常需要用 ...

  5. Eclipse——关联源代码

    Eclipse——关联源代码 摘要:本文主要说明了如何在Eclipse里关联源代码. 下载源码包 首先去想要关联的jar包的官网下载对应jar包的源代码,拿Tomcat的类库举例,先去官网下载源码包: ...

  6. 形如 T(n) = a * T(n/b) + f(n) 的时间复杂度计算方法

    形如 T(n) = a * T(n/b) + f(n) 的时间复杂度计算方法 有一种方法叫做主方法(Master method)是用来专门计算这种形式的时间复杂度的,方法具体如下: 下边举例进行说明: ...

  7. 15. Go 语言“避坑”与技巧

    Go 语言"避坑"与技巧 任何编程语言都不是完美的,Go 语言也是如此.Go 语言的某些特性在使用时如果不注意,也会造成一些错误,我们习惯上将这些造成错误的设计称为"坑& ...

  8. 初识微信小程序

    一.简介 微信小程序是运行在微信环境中的应用,它只能在微信中运行,不能运行在浏览器等其他环境中,微信团队提供了专门的开发工具用于微信小程序的开发,还提供了丰富的API,让我们的小程序能够具备与手机设备 ...

  9. Java方法之重载

    Java方法之重载 本篇探究Java中的方法重载.那么,什么是重载呢?先上一串代码: package com.my.pac06; /** * @author Summerday * @date 201 ...

  10. 对Python中一些“坑”的总结及技巧

    一.赋值即定义 1.运行以下代码会出现报错 #!/usr/bin/env python #_*_conding:utf-8_*_ x = 100 def outer(): def inner(): x ...