图片上传裁剪这功能随处可见,有的自己写,不过太耗费时间了,插件的话感觉好多,前段时间就想挑一款好的插件,以后就用那款,可是挑了几款插件用上去,效果很好,问题就出在合并了,单一的插件效果是很好的,没问题,不然人家也不用吃饭了,可是当我把这几款插件合并一起用的时候就各种奇怪的问题出来了,决解了一个又跑出一个来了,最后挑了好半天发现了一款还好用的,就赶紧的记录下来了,不然以后要用又要找,麻烦死了,浪费时间啊,所以记录一下心得,一步到位。

第一步:html代码

<script src="~/Scripts/jquery-1.10.2.min.js"></script><!--要9.0以上的版本-->
<script src="~/js/jquery.form.js"></script><!--一步上传提交(上传)此插件不是裁剪,属于另外下载的,为了方便异步上传提交-->
<link href="~/css/bootstrap.min.css" rel="stylesheet" />
<link href="~/css/cropper.css" rel="stylesheet" />
<link href="~/css/docs.css" rel="stylesheet" />
<script src="~/js/bootstrap.min.js"></script>
<script src="~/js/cropper.js"></script><!--裁剪上传 http://fengyuanchen.github.io/cropper/ --><form action="#" id="form_upload" method="post"><label style="width:60px;height:30px;" for="inputImage" title="打开图片"><input class="hide" id="inputImage" name="file" type="file" accept="image/*">浏览...</label><!--上传提示--><div class="upload_tag"></div><div style="margin-top:10px;"><div style="width:100px;height:100px;"><img alt="Picture" class="cropper" src="/images/background1.jpg" /></div><br /><br /><div class="preview preview-lg"></div></div><br /><br /><div><input type="submit" value="上传" class="btn upload_point btn-primary" style="width:60px;height:30px;" /></div>
</form>

View Code

第二步:docs.js代码

$(function () {var $image = $(".cropper"),$dataX = $("#dataX"),$dataY = $("#dataY"),$dataHeight = $("#dataHeight"),$dataWidth = $("#dataWidth"),//console = window.console || { log: $.noop },cropper;$image.cropper({aspectRatio: 1,//纵横比例string/number,默认auto,1表示正方形,16/4表示长方形autoCropArea: 0.3,//0和1之间的数。定义自动裁剪区域的大小(百分比)zoomLevel: 1,//缩放级别//data: {//只支持四个属性:“x”,“y”,“width”和“height”,默认情况下裁剪区将出现在图像的中心。//  x: 420,//  y: 50,//  width: 100,//  height: 100//},preview: ".preview",//jQuery选择器预览,添加额外的元素,预览区域modal: true,//区分裁剪区和背景dashed: true,//设置裁剪区的方格虚线autoCrop: true,//是否自动显示裁剪区dragCrop: true,//使删除当前裁剪区,通过拖动在图像上创建一个新的dashed: true,modal: true,movable: true,//移动裁剪区resizable: true,//调整裁剪区zoomable: true,//放大图片rotatable: true,//旋转图片checkImageOrigin: true,//检查图像的来源,如果它是一个跨原产地形象,crossorigin属性将被添加到图像元素使“旋转”和“getdataurl”//maxWidth: 100,//裁剪区//maxHeight: 100,//minWidth: 100,//minHeight: 100,done: function (data) {//区域变化时触发$dataX.val(data.x);$dataY.val(data.y);$dataHeight.val(data.height);$dataWidth.val(data.width);},build: function (e) {//创建裁剪区之前触发},built: function (e) {//创建裁剪区之后触发$image.cropper("zoom", -1);},dragstart: function (e) {//裁剪区移动之前触发},dragmove: function (e) {//裁剪区移动之时触发},dragend: function (e) {//裁剪区移动之后触发}});$("#zoomOut").click(function () {$image.cropper("zoom", -1);});var $inputImage = $("#inputImage");if (window.FileReader) {//选择图片$inputImage.change(function () {var fileReader = new FileReader(),files = this.files,file;if (!files.length) {return;}file = files[0];if (/^image\/\w+$/.test(file.type)) {fileReader.readAsDataURL(file);fileReader.onload = function () {$image.cropper("reset", true).cropper("replace", this.result).css("width","100px");$inputImage.val("");};} else {showMessage("请选择图片.");}});} else {$inputImage.addClass("hide");}});//上传代码
$(".upload_point").click(function () {//alert($(".cropper").cropper("getDataURL"), type); return false;$("#form_upload").ajaxSubmit({url: "/Home/ProcessRequest",type: "post",dataType: "text",data: { "getDataURL": $(".cropper").cropper("getDataURL",{width: 50,height: 50}) },//表示把base64的图片字符格式提交到后台success: function (data) {$(".upload_tag").text(data).css({"color":"green","display":"block"});}, error: function () {$(".upload_tag").text("上传异常,请刷新或重新登录").css({ "color": "red", "display": "block" });}});return false;
});

View Code

第三步:后台代码

 1 [HttpPost]
 2 public string ProcessRequest(FormCollection f)
 3 {
 4     try
 5     {
 6             string byteStr = f["getDataURL"].ToString();//data:image/png;base64,
 7                 int delLength = byteStr.IndexOf(',') + 1;
 8                 string str = byteStr.Substring(delLength, byteStr.Length - delLength);
 9                 Image returnImage = Base64StringToImage(str);
10
11                 returnImage.Save(Server.MapPath("/images/head/") + Guid.NewGuid() + ".jpg",
12
13 System.Drawing.Imaging.ImageFormat.Jpeg);
14     }
15     catch (Exception)
16     {
17             return "上传失败";
18     }
19         return "上传成功";
20 }
21 //base64编码的文本 转为    图片
22 private Image Base64StringToImage(string txt)
23 {
24     byte[] arr = Convert.FromBase64String(txt);
25     MemoryStream ms = new MemoryStream(arr);
26     Bitmap bmp = new Bitmap(ms);
27     return bmp;
28 }

View Code

转载于:https://www.cnblogs.com/LiuZhen/p/4206295.html

图片裁剪和异步上传插件--一步到位(记录)相关推荐

  1. jQuery 异步上传插件 Uploadify 使用 (Java平台)

    Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.而且是Ajax的,省去了自己写Ajax上传功能的麻烦.不过官方提供的实例时php版本的,本文将详细介绍Uploadify ...

  2. bootstrap File Input 多文件上传插件使用记录(二)删除原文件

    在上一篇文章中,主要介绍了file input插件的初始化和多文件同步上传到服务器的相关配置等.这篇主要介绍file input插件的编辑等. 使用场景: 在后台管理框架中,一条数据中包含不固定的多张 ...

  3. 图片裁剪 cropper.js 上传组件封装 vue

    //HTML cropper.js 文档地址: https://github.com/fengyuanchen/cropperjs/blob/master/README.md <template ...

  4. Asp.net mvc4用JQuery插件实现异步上传

    下载异步上传插件AjaxFileUploader,下载地址:http://phpletter.com/DOWNLOAD/ 解压,保存在 asp.net mvc项目的一个文件夹下,如下图: 1.     ...

  5. html访问手机相册,使用HTML5的FileReader读取手机图片(还可选择拍照), 并自动异步上传到服务器上...

    使用html5 FileReader获取图片,并异步上传到服务器(not iframe) body{margin: 0px; background:#f2f2f0;} p{margin:0px;} . ...

  6. 从实战中学前端:打造自己的 html5 文件上传插件

    文件上传初体验 <!-- 这里用了前边的按钮样式,不是重点 --> <input type="file" id="logo" name=&qu ...

  7. [转载]强大的文件上传插件

    近期有朋友分享了一款文件上传插件,忍不住要与大家分享一下! upload.js /* 无刷新异步上传插件 2013-10-16 Devotion Created */ (function ($) { ...

  8. ipad html 自定义裁剪图片大小,移动端图片裁剪上传插件 Mavatar.js(原创)

    插件描述:移动端头像上传,支撑头像预览和放大缩小平移,内置上传至后端请求方法. 注:请在移动端用手势查看缩放效果,PC端无法缩放 Mavatar 移动端头像上传,支撑头像预览和放大缩小平移,内置上传至 ...

  9. java上传头像插件_JSP+SpringMVC框架使用WebUploader插件实现注册时候头像图片的异步上传功能...

    一.去官网下载webuploader文件上传插件 下载好后把它放到Javaweb项目的文件夹中(我放到了webcontent下面的static里面) 二.复制前端的样式 把这段代码放到你想要放到的位置 ...

最新文章

  1. 深度优先搜索算法在RPG游戏迷宫中的应用
  2. [JVM-翻译]揭开java.lang.OutOfMemoryError面纱之一
  3. C# 继承实现父类方法、重写、重载
  4. Android 设置EditText光标Cursor颜色及粗细
  5. OpenCV特征检测Feature Detection
  6. 数据挖掘学习日志(part1)--熵值法
  7. 关于SAP Spartacus重载(override)UserAuthenticationTokenService的问题
  8. 如何使用系统自带的日志转储功能logroate.存放应用日志
  9. 经常有人问我:我想招个会写文案的,可是好文案真的很难招,自己写吧,又不会……
  10. 自定义_Excel中的自定义函数(自定义函数的基础内容)
  11. 关于iOS和OS X废弃的API知识点
  12. Linux 中 ext、ext2、ext3、ext4 文件系统介绍与区别
  13. 免费谷歌云服务器,极简到手指南
  14. Git出错,提示error: bad signature 0x00000000 fatal: index file corrupt(win10系统)
  15. 能力素质有所欠缺_任职资格体系之七:员工能力评价模型
  16. 重庆云阳2021云中高考成绩查询,重庆云阳中学2021年招生简章
  17. 奶制品生产与销售matlab,奶制品生产和销售
  18. wcdma码片速率_WCDMA中3.84M码片速率的由来
  19. ssh、git环境配置
  20. Android手机号码获取问题

热门文章

  1. 使用Keras进行深度学习:(三)使用text-CNN处理自然语言(上)
  2. 渗透测试入门DVWA 教程1:环境搭建
  3. 加州大学信息科学院长:数据科学课程不只是工程师才修的
  4. Linux系统开机自启流程
  5. spring mvc 入门配置
  6. javax.jdo.option.ConnectionURL配置的问题
  7. 关于volatile(转)
  8. 【推荐】BREW中 - 显示和图像
  9. android 自定义menu背景,Android编程实现自定义系统菜单背景的方法
  10. 画闭合的多边形 - HTML5 Canvas 作图