cropper.js实现图片裁剪预览并转换为base64发送至服务端。
一 、准备工作
1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令:
npm install cropper
2. cropper基于jquery,在此不要忘记引入jq,同时记得引入cropper.css
3. 此处后端使用的nodejs,不过不懂node的影响也不大。
二 、 图片裁剪并预览
1.首先利用cropper完成图片裁剪并预览:
<input type="file" name="" id="imgBtn" name="imgCut">
<!-- 预览容器-->
<div class="box">
<img src="" id="preview">
</div>
<!-- 点击上传按钮裁剪-->
<input type="button" name="" value="上传" onclick="imgSubmit()">
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="../js/cropper.min.js"></script>
<script>
//生成裁剪区域
$("#imgBtn").change(function(e){
var file = $("#imgBtn").get(0).files[0];
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload=function(e){
alert('文件读取完成');
$("#preview").attr("src",e.target.result)
var $img = $("#preview");
$('.box > img').cropper({
aspectRatio: 16 / 9,
crop: function(data) {
}
});
} })
//预览裁剪后的图片
function imgSubmit(){
var result= $('.box > img').cropper("getCroppedCanvas");
document.body.appendChild(result);
}
</script>
裁剪并预览的完整代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/cropper.min.css">
<style type="text/css">
.box{
width: 600px;
height: 600px;
border:5px solid #555fff;
border-radius: 10px;
}
</style>
</head>
<body>
<input type="file" name="" id="imgBtn" name="imgCut">
<!-- 预览容器-->
<div class="box">
<img src="" id="preview">
</div>
<!-- 点击上传按钮裁剪-->
<input type="button" name="" value="上传" onclick="imgSubmit()">
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="../js/cropper.min.js"></script>
<script>
//生成裁剪区域
$("#imgBtn").change(function(e){
var file = $("#imgBtn").get().files[];
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload=function(e){
alert('文件读取完成');
$("#preview").attr("src",e.target.result)
var $img = $("#preview");
$('.box > img').cropper({
aspectRatio: / ,
crop: function(data) {
}
});
} })
//预览裁剪后的图片
function imgSubmit(){
var result= $('.box > img').cropper("getCroppedCanvas");
document.body.appendChild(result);
}
</script> </body>
</html>
三、图片裁剪预览后以base64发送至服务端
此处后端使用nodejs,没有基础的可以看我之前的nodejs文章。
前端页面如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="../css/cropper.min.css">
<style type="text/css">
.box{
width: 600px;
height: 600px;
border:5px solid #555fff;
border-radius: 10px;
}
</style>
</head>
<body>
<form>
<input type="file" name="" id="imgBtn" name="imgCut">
<div class="box">
<img src="" id="previewyulan">
</div>
<input type="button" name="" value="上传" onclick="imgSubmit()">
</form> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="../js/cropper.min.js"></script>
<script type="text/javascript">
$("#imgBtn").change(function(e){
var file = $("#imgBtn").get(0).files[0];
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload=function(e){
alert('文件读取完成');
$("#previewyulan").attr("src",e.target.result)
var $img = $("#preview");
$('.box > img').cropper({
aspectRatio: 16 / 9,
crop: function(data) {
//转换为base64
// var $imgData=$img.cropper('getCroppedCanvas')
// var dataurl = $imgData.toDataURL('image/png');
// $("#previewyulan").attr("src",dataurl)
}
});
} }) function imgSubmit(){
//获取裁剪后的canvas对象
var result= $('.box > img').cropper("getCroppedCanvas");
//将canvas对象转换为base64
var dataurl =result.toDataURL('image/png');
document.body.appendChild(result);
//发起post请求
var data = "img="+dataurl+"";
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(event){
if(xhr.readyState == 4){ //4:解析完毕
if(xhr.status == 200){ //200:正常返回
console.log(xhr)
}
}
};
xhr.open('POST','imgCut',true); //true为异步
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send(data);
} </script>
</body>
</html>
路由拦截:
app.post("/html/imgCut",function(req,res){
console.log(req.body.img);
//此处省略详细的后端逻辑代码
res.send();
})
有需要可以留言。
cropper.js实现图片裁剪预览并转换为base64发送至服务端。的更多相关文章
- node.js平台下,cropper.js实现图片裁剪预览并转换为base64发送至服务端。
一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...
- 使用JCrop进行图片裁剪,裁剪js说明,裁剪预览,裁剪上传,裁剪设计的图片处理的工具类和代码
1.要想制作图片裁剪功能,可以使用网上的裁剪工具JCrop,网址是:https://github.com/tapmodo/Jcrop/ 案例效果如下: 2.引入JCrop的js代码,具体要引入那 ...
- JavaScript实现图片裁剪预览效果~(第一个小玩具)
感觉开始学习的前一个月真的太不珍惜慕课网的资源了 上面蛮多小玩意真的蛮适合我这样刚入门JavaScript的同学加深使用理解 大概收藏了百来门或大或小的课程 有一个感觉就是学这个真的比光是看书看概 ...
- Java实现图片裁剪预览功能
在项目中.我们须要做些类似头像上传,图片裁剪的功能,ok看以下文章! 须要插件:jQuery Jcrop 后端代码: package org.csg.upload; import java.awt.R ...
- pdf.js实现图片在线预览
项目需求 前段时间项目中遇到了一个模块,是关于在线预览word文档(PDF文件)的,所以,找了很多插件,例如,pdf.js,pdfobject.js框架,但是pdfobject.js框架对于IE浏览器 ...
- js 实现图片实时预览
<body> 上传图片: <input type="file" name="file" style="width: 200px; h ...
- js实现图片实时预览
注: 此博客转自 http://www.cnblogs.com/goody9807/p/6064582.html 转载请注明出处 <body> 上传图片: <input type= ...
- H5项目 使用Cropper.js 实现图片 裁剪 操作 (APP端)
参考地址: 1.https://www.jianshu.com/p/b252a7cbcf0b 2.https://blog.csdn.net/weixin_38023551/article/detai ...
- 基于cropper.js的图片上传和裁剪
项目中要求图片上传并裁剪的功能,之前也有接触过很多图片裁剪插件,效果体验不是很好,今天推荐一款好用的插件-cropper,超级好用,裁剪功能丰富,满足了各种需求. 功能: 1:点击选择图片,弹出文件夹 ...
随机推荐
- 数据量越发庞大怎么办?新一代数据处理利器Greenplum来助攻
作者:李树桓 个推数据研发工程师 前言:近年来,互联网的快速发展积累了海量大数据,而在这些大数据的处理上,不同技术栈所具备的性能也有所不同,如何快速有效地处理这些庞大的数据仓,成为很多运营者为之苦恼的 ...
- Qt error ------ qRegisterMetaType() 跨线程信号与槽的形参携带
Qt提示: QObject::connect: Cannot queue arguments of type 'FrequencySpectrum' (Make sure 'FrequencySpec ...
- 移动端Web页面问题解决方案
1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显 ...
- 如何构建 Redis 高可用架构?
温国兵 民工哥技术之路 今天 1 .题记 Redis 是一个开源的使用 ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的 API. 如今,互 ...
- SQL记录-PLSQL面向对象
PL/SQL面向对象 PL/SQL允许定义一个对象类型,这有助于在Oracle的数据库中设计的面向对象.对象类型可以包装复合类型.使用对象允许实现数据的具体结构现实世界中的对象和方法操作它.对象有属性 ...
- Spring 学习01
一.Spring概念 1 spring是开源的轻量级框架 2 spring核心主要两部分: (1)aop:面向切面编程,扩展功能不是修改源代码实现 (2)ioc:控制反转, - 比如有一个类,在类里面 ...
- shell 判断为空打印
判断参数是否为空-空退出并打印null #!/bin/sh echo $ name=${:?"null"} echo $name
- header()跳转
if ($toNews == 1) { header('Location:/ucenter/pageMailBox/2'); exit; } PHP跳转页面,用 header() 函数 定义和用法 h ...
- 用原生js对表格排序
阿里的模拟笔试题,当时时间有限没写出来,其实是因为自己对原生dom操作不熟悉,这里补一下. 题目的大意是有一个表格,如代码所示 <table> <tr> <th>N ...
- 爬虫笔记之w3cschool注册页面滑块验证码破解(巨简单滑块位置识别,非鼠标模拟轨迹)
一.背景介绍 最开始接触验证码破解的时候就是破解的w3cschool的使用手机号找回密码页面的验证码,详见:验证码识别之w3cschool字符图片验证码(easy级别),这次破解一下他们注册页面的滑块 ...