结合canvas和jquery.Jcrop.js裁切图像上传图片
1、引入的外部资源:
jquery.Jcrop.css、jquery.Jcrop.js、upimg.js
2、使用的页面元素
@* 选择照片 *@
<div class="line">
<h2 class="not">请选择照片:</h2>
<div class="">
<input id="image_file" name="updata_file" accept="image/gif,image/jpg,image/bmp,image/jpeg,image/png,image/tiff,image/tif" style="display:none" value="选择照片" type="file" />
<button id="image_filebtn" class="hex-lightgrey-btn" type="button">选择照片</button>
<button id="save_btn" class="hex-green-btn" style="display: none" type="button">确认修改</button>
<span class="hex-font-orange error">仅支持JPG、PNG格式图片,且文件小于2M</span>
</div>
</div>
@* 头像裁剪和预览 *@
<div class="img">
<div id="wrapper" class="hex-wrapper" style="width: 600px;height: 600px">
@if (!string.IsNullOrEmpty(Model.Profile.User.Avatar))
{
<img id="preview" src="@WebTools.ConvertResourceUrl(Model.Profile.User.Avatar)" />
}
else
{
<img id="preview" src="/Content/Images/userdefault.jpg" />
}
</div>
<div>
<h6>头像预览:</h6>
<canvas id="cropper" width="250" height="250"></canvas>
</div>
</div>
3、使用的脚本方法
var cropper;
$(document).ready(function () {
$("#image_file").change(function () {
Loading();
fileSelectHandler();
var errorMsg = $(".error").html();
if (errorMsg != "请选择一个有效的图像文件(JPG和PNG是被允许的)" && errorMsg != "您选择的文件太大,请选择一个较小的图像文件") {
$("#save_btn").show();
}
LoadingEnd();
});
$("#image_filebtn").click(function () {
$("#image_file").click();
}); $("#save_btn").bind("click", function () {
Loading();
var imgUrl = document.getElementById("cropper").toDataURL("image/png");
var imageData = encodeURIComponent(imgUrl);
$.ajax({
url: "/Profile/PhotoHandle",
type: "post",
data: { imageData: imageData },
success: function (data) {
if (data) {
document.getElementById("photo_img").src = imgUrl;
} else {
alertno("删除失败");
LoadingEnd();
}
}
});
});
});
4、control的方法,发送服务器请求
public ActionResult PhotoHandle(string imageData)
{
string imgStr = HttpUtility.UrlDecode(imageData, Encoding.UTF8).Split(',')[];
byte[] imageBytes = Convert.FromBase64String(imgStr);
string result = SaveImage(imageBytes, CurrentUser.Name);
var obj = Common.Serialization.JsonHelper.JsonToObject<UpLoadBack>(result);
EntAppFrameWorkContext.DomainModelService.ExtenedService<IUser>()
.UpdateAvatar(Int64.Parse(CurrentUser.Key), obj.ResourceID.ToString());return Content(obj.ResourceID.ToString());
}
public static string SaveImage(byte[] imageBytes, string CurrentUserName)
{
string cms = WebConfigHelper.CmsWebsite.Replace("https", "http");
if (string.IsNullOrEmpty(cms)) return null;
var token = Token.GetToken(CurrentUserName);
string url = cms.TrimEnd('/') + "/FileManagement/UpLoadFile_Server?ssotoken=" + token;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
request.KeepAlive = true;
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("ext", "png");
request.Headers.Add("contentType", "image/png");
request.Headers.Add("hash", imageBytes.GetHashCode().ToString());
//填充POST数据
request.ContentLength = imageBytes.Length;
//myReq.
Stream requestStream = request.GetRequestStream();
requestStream.Write(imageBytes, , imageBytes.Length);
requestStream.Close();
string result = string.Empty;
try
{
//发送POST数据请求服务器
HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse(); Stream myStream = HttpWResp.GetResponseStream(); //获取服务器返回信息
StreamReader reader = new StreamReader(myStream, Encoding.UTF8);
result = reader.ReadToEnd(); //释放
myStream.Close(); }
catch (Exception exp)
{
result = "报错:" + exp.Message;
} return result;
}
结合canvas和jquery.Jcrop.js裁切图像上传图片的更多相关文章
- 实现图像剪裁 jquery.Jcrop
配合 jquery.Jcrop 实现上传图片进行剪裁保存功能 <script src="js/jquery.min.js"></script> ...
- 基于 jQuery Jcrop 插件的功能模块:头像剪裁
/** Jcrop version: 0.9.12 jQuery version: 1.9.0 Author: 小dee Date: 2014.10.30 */ 先看看他山之石:博客园的头像模块也是使 ...
- jQuery Jcrop API参数说明(中文版)(转)(图片剪切)
Jcrop是一个jQuery图片裁剪插件,它能为你的WEB应用程序快速简单地提供图片裁剪的功能.特点如下: 对所有图片均unobtrusively(无侵入的,保持DOM简洁) 支持宽高比例锁定 支持 ...
- struts2+jsp+jquery+Jcrop实现图片裁剪并上传
<1> 使用html标签上传需要裁剪的大图. <2> 在页面呈现大图,使用Jcrop(Jquery)对大图进行裁剪,并且可以进行预览. <3> 选择好截取部分之后发 ...
- jQuery JCrop插件的使用详解
jQuery的一个图片剪切的一个插件, 使用插件必须条件:引入jQuery.js文件,引入jQuery.Jcrop.js文件,引入JQuery.Jcrop.css文件 1.最基本的使用方法: &l ...
- jQuery Jcrop 图像裁剪
jQuery Jcrop 图像裁剪 http://code.ciaoca.com/jquery/jcrop/ cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像.) https://b ...
- 调用jquery.Jcrop.min.js 切割图片 实例
需求是:上传一个图片,然后将上传的这个图片进行切割........ 首先是jsp页面.页面需要引入js <script src="${fileUrlPrx}/scripts/wap/ ...
- js 图片处理 Jcrop.js API
引入jquery.Jcrop.min.css和jquery.Jcrop.min.js 参数/接口说明 options 参数说明 名称 默认值 说明 allowSelect true 允许新选框 all ...
- 动态生成二维码插件 jquery.qrcode.js
前段时间做项目,需要动态生成一个二维码,于是就在网上找了一下发现一个jquery插件jquery.qrcode.js,所以今天就简单说一下这个插件的使用: jquery.qrcode.js是依赖jqu ...
随机推荐
- topcoder srm 550 div1
problem1 link 因为数据比较小,直接开一个二维数组记录哪些格子已经遍历,哪些还没有.进行模拟即可. problem2 link 模拟一些小数据,可以发现,AB的形状以及要求的区间是下面的样 ...
- Android灯光系统_编写HAL_lights.c【转】
本文转载自:https://blog.csdn.net/qq_33443989/article/details/77074411 1>. 编写灯光系统的HAL层 之 HAL_light.c1&l ...
- 集训DAYn——拉格朗日插值法
看zzq大佬的博客,看到了这个看似很深奥的东西,实际很简单(反正比FFT简单,我是一个要被FFT整疯了的孩子) 拉格朗日插值法 是什么 可以找到一个多项式,其恰好在各个观测点取到观测到的值.这样的多项 ...
- Docker 使用Docker-Compose编排容器
简介: Docker Compose是一个用来定义和运行复杂应用的Docker工具.一个使用Docker容器的应用,通常由多个容器组成.使用Docker Compose不再需要使用shell脚本来启动 ...
- Spring核心简介
Spring简介 Spring是一个开源.轻量级框架.在诞生之初,创建Spring的主要目的是用来替代更加重量级的企业级Java技术,尤其是EJB(Enterprise JavaBean).从最初的挑 ...
- 【Hadoop 分布式部署 九:分布式协作框架Zookeeper架构 分布式安装部署 】
1.首先将运行在本地上的 zookeeper 给停止掉 2.到/opt/softwares 目录下 将 zookeeper解压到 /opt/app 目录下 命令: tar -zxvf zoo ...
- BMv2 simple_switch 运行时切换P4程序
参考: [P4-dev] swapping p4 program using load_new_config and swap_configs commands BMv2 运行时切换P4程序 相关演示 ...
- usart2 重映射
今天拾起闲置很久的灰机,测试发现nrf2401坏掉,重新淘宝.还发现机上搭载的usart1坏掉,换成usart2,发现端口被电机占用,重映射到PD5,PD6 关键是后面两句不要忘记了 RCC_APB1 ...
- BaseEditor
using UnityEngine;using System.Collections.Generic;using UnityEditor;using System.Text;using System. ...
- 6-1 建立客户端与zk服务端的连接
6-1 建立客户端与zk服务端的连接 zookeeper原生java api使用 会话连接与恢复; 节点的增删改查; watch与acl的相关操作; 导入jar包;