html5在线裁剪,HTML5和JQuery裁剪图像实时预览缩略图并上传
本文介绍如何使用HTML5和JQuery裁剪图像实时预览缩略图并上传,需要用到插件Jcrop。
HTML5和JQuery裁剪图片
使用HTML5和JQuery裁剪图片
调用JQuery库文件
调用Jcrop js插件
该js文件需要下载到本地(文件包含在本文源码压缩包里),调用时要注意文件路径。
调用css文件
css文件要下载到本地(文件包含在本文源码压缩包里),调用时要注意文件路径。
html标记
HTML标记由HTML FileUpload、HTML Image、HTML按钮、HTML5 Canvas 和一些隐藏字段组成。
JQuery实现代码
$(function () {
$('#FileUpload1').change(function () {
$('#Image1').hide();
var reader = new FileReader();
reader.onload = function (e) {
$('#Image1').show();
$('#Image1').attr("src", e.target.result);
$('#Image1').Jcrop({
onChange: SetCoordinates,
onSelect: SetCoordinates
});
}
reader.readAsDataURL($(this)[0].files[0]);
});
$('#btnCrop').click(function () {
var x1 = $('#imgX1').val();
var y1 = $('#imgY1').val();
var width = $('#imgWidth').val();
var height = $('#imgHeight').val();
var canvas = $("#canvas")[0];
var context = canvas.getContext('2d');
var img = new Image();
img.onload = function () {
canvas.height = height;
canvas.width = width;
context.drawImage(img, x1, y1, width, height, 0, 0, width, height);
$('#imgCropped').val(canvas.toDataURL());
};
img.src = $('#Image1').attr("src");
});
});
function SetCoordinates(c) {
$('#imgX1').val(c.x);
$('#imgY1').val(c.y);
$('#imgWidth').val(c.w);
$('#imgHeight').val(c.h);
$('#btnCrop').show();
};
在jquery document ready事件处理程序中,将更改事件处理程序分配给FileUpload控件,并将单击事件处理程序分配给html按钮。
当在HTML FileUpload控件中选择文件时,将使用HTML FileReader API读取文件,然后图像显示在image元素中,最后将Jcrop插件应用于image元素。
注:有关使用HTML5 FileReader API显示图像的更多详细信息,请参阅我的文章“图片上传之前用 jQuery FileReader() 显示预览图的实例”。
Jcrop插件在其onChange和onSelect事件处理程序上调用SetCoordinates函数,它允许我们将坐标和尺寸(即裁剪图像的高度和宽度)保存到隐藏字段中。
$('#Image1').Jcrop({
onChange: SetCoordinates,
onSelect: SetCoordinates
});
单击裁剪按钮时,它首先创建HTML5 Canvas的实例,然后使用OnLoad事件处理程序将图像加载到图像对象中。
在OnLoad事件处理程序中,使用保存坐标和尺寸(即裁剪图像的高度和宽度)在Canvas上重新绘制原始图像。
最后,使用toDataURL方法从Canvas中提取剪切图像的base64字符串,并保存在imgCropped hidden字段中,该字段稍后可发送到服务器以保存图像。
完整HTML代码
$(function () {
$('#FileUpload1').change(function () {
$('#Image1').hide();
var reader = new FileReader();
reader.onload = function (e) {
$('#Image1').show();
$('#Image1').attr("src", e.target.result);
$('#Image1').Jcrop({
onChange: SetCoordinates,
onSelect: SetCoordinates
});
}
reader.readAsDataURL($(this)[0].files[0]);
});
$('#btnCrop').click(function () {
var x1 = $('#imgX1').val();
var y1 = $('#imgY1').val();
var width = $('#imgWidth').val();
var height = $('#imgHeight').val();
var canvas = $("#canvas")[0];
var context = canvas.getContext('2d');
var img = new Image();
img.onload = function () {
canvas.height = height;
canvas.width = width;
context.drawImage(img, x1, y1, width, height, 0, 0, width, height);
$('#imgCropped').val(canvas.toDataURL());
};
img.src = $('#Image1').attr("src");
});
});
function SetCoordinates(c) {
$('#imgX1').val(c.x);
$('#imgY1').val(c.y);
$('#imgWidth').val(c.w);
$('#imgHeight').val(c.h);
$('#btnCrop').show();
};
效果如图:
HTML5和JQuery裁剪图片
上传裁剪图片到服务器
由于裁剪图片以base64字符串形式存储在imgCropped字段中,所以上传图片其实是在服务器端接收该字段的字符串即可,然后可在服务器端把该base64字符串转换为图片保存起来。这里不再提供服务器端处理程序,大家根据自己编程的语言,例如php,可直接百度“php把base64字符串转换为图片保存”。
您可能对以下文章也感兴趣
html5在线裁剪,HTML5和JQuery裁剪图像实时预览缩略图并上传相关推荐
- 定制jQuery File Upload为微博式单文件上传
原文链接:http://avnpc.com/pages/single-file-upload-component-by-jquery-file-upload jQuery File Upload是一个 ...
- h5在线制作html5,在线制作HTML5多媒体作品的技巧
HTML5多媒体作品以其对各种平台的兼容而见长,目前已获得了广泛的应用.如果我们需要制作自己的HTML5多媒体作品,一个方便之选就是利用现成的在线制作工具"百度H5". 首先访问& ...
- 【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放
导航 [初探HTML5之使用新标签布局]用html5布局我的博客页! [HTML5初探之form标签]解放表单验证.增加文件上传.集成拖放 [HTML5初探之绘制图像(上)]看我canvas元素引领下 ...
- jquery插件课程2 放大镜、多文件上传和在线编辑器插件如何使用
jquery插件课程2 放大镜.多文件上传和在线编辑器插件如何使用 一.总结 一句话总结:插件使用真的还是比较简单的,引包,初始化,配置参数(json),配置数据(json),而后两步不是必须的.而且 ...
- jQuery Lightbox图片放大预览
简介:jQuery Lightbox图片放大预览代码是一款可以在用户点击页面中的小图片时,将该图片的高清版本以Lightbox的方式放大显示在页面的中间,提高用户的体验度. 效果展示 http://h ...
- jquery学习2_jquery知识预览
jquery学习2_jquery知识预览 jquery版本: 大版本 1.x版本:能够兼容IE678浏览器 2.x版本:不兼容IE678浏览器 1.x和2.x版本jquery都不再更新版本了,现在只更 ...
- html图片点击局部放大,jQuery教程 css+jQuery实现图片局部放大预览
本篇教程介绍了jQuery教程 css+jQuery实现图片局部放大预览,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入. < 今天有时间开始动手,使用css+jquer ...
- html5 在线白板,Html5 canvas画图白板踩坑
最近接手了一个小型的H5,最主要的功能大概就是拍照上传和canvas画板了. 主要是记录一下自己菜到像傻子一样的技术. 1.canvas画板隔空打牛!画布越往上部分错位距离越小,越往下距离越大. 2. ...
- html5在线api,HTML5 历史记录API
HTML5 历史记录API HTML5历史记录API的使用方法,在线实例演示HTML5历史记录API如何使用.浏览器的兼容性.语法定义及它的属性值详细资料等. HTML5历史记录API使您可以通过Ja ...
- html5 在线摄像头,HTML5在线摄像头使用
HTML5在线摄像头应用 最近在搞一个考试系统,系统要求要有随机拍照的功能,并且摄像头能够收到js的控制.在线摄像头嘛,就那两种实现的方式:cab或者flash. 暂且不论本人从没学过的flash(事 ...
最新文章
- WinRM设置信任主机
- C++继承中父类和子类之间的同名覆盖
- CCNA考试中实验题精讲(RIP,OSPF,VLAN)
- Flask 应用的文件结构
- gem for onenote安装教程
- 解放双手!推荐一款阿里开源的低代码工具,YYDS!
- Bootstrap 组件之 Nav
- php和xml区别,php和XML
- 中国可生物降解和生物可吸收支架行业市场供需与战略研究报告
- weka连接mysql数据库
- 博格和他的先锋集团创业史(2):我觉得自己在天堂
- python finally语句里面出现异常_python try except语句出现异常
- python实现最长公共子串
- word标题级别编号设置
- ArcGIS Pro功能模块简介
- 丁火生于未月命理分析_丁火生于未月的性格特征
- SQL优化:使用distribute by 防止数据倾斜
- 98家央企及下属上市企业全名单(2023版)
- 使用adb命令操作多台设备
- matlab如何仿真递推型dft算法,递推dft算法
热门文章
- 如何使用 VNC 远程访问树莓派
- 2021年最新版裁判文书逆向
- 类案检索功能优化建议(一)——开发路径辨析
- 【图论】欧拉通路和哈密顿通路
- 中国现代文学专题形考2022
- Awvs详细使用教程
- 计算机组成原理 学后感,【计算机组成原理实验心得体会】_计算机组成原理实验心得_计算机组成原理实验感想...
- 大学计算机实践教程咖啡文化,北京大学图书馆学习共享空间.docx
- 还不会用 Python 提取 PDF 表格?三种类型数据,轻松转换成 Excel
- 用标签打印软件将Excel中的多列数据合并打印