cropper.js移动端使用

一、总结

一句话总结:

启示:找对关键词,找对相关方面的应用,效果真的非常好

比如 cropper.js移动端使用,这样设置了(dragMode: 'move',//拖拽模式) 之后,手机端的效果就变的好起来了

1、cropper.js移动端设置?

dragMode: 'move',//拖拽模式

2、移动端打开相册?

accept属性,值为image/*

二、移动端图片裁剪上传—jQuery.cropper.js

转自或参考:移动端图片裁剪上传—jQuery.cropper.js

https://www.cnblogs.com/kiko-2/p/10273568.html

jQuery.cropper.js是一款使用简单且功能强大的图片剪裁jQuery插件。该图片剪裁插件支持图片放大缩小,支持图片旋转,支持触摸屏设备,支持canvas,并且支持跨浏览器使用。

一、移动端获取本地相册兼容

安卓:

ios:

var agent =navigator.userAgent.toLowerCase();if(agent.indexOf('iphone') != -1 || agent.indexOf('ipad') != -1){ $('.js_upFile').removeAttr("capture");}

二、判断图片格式

functioncheck_Image_Format(value){ var regexp = new RegExp("(.JPEG|.jpeg|.JPG|.jpg|.PNG|.png|.svg|.gif|.bmp)$",'g'); returnregexp.test(value);}

三、获取图片文件的url

//Blob URL格式

functionget_File_Url(file) {var url == null;if(window.createObjectURL) {

url=window.createObjectURL(file) ;

}else if(window.URL) {

url=window.URL.createObjectURL(file) ;

}else if(window.webkitURL) {

url=window.webkitURL.createObjectURL(file) ;

}returnurl ;

}//Data URL格式(base64编码)

functionget_File_Url(file) {var reader = newFileReader();

reader.readAsDataURL(file);

reader.οnlοad= function(e) {

...

previewImg.attr("src",e.target.result);}}

四、图片预览

图片预览容器:

$('.js_upFile').change(function() {if(!check_Image_Format(this.value)){

alert('格式错误!');return;

}var objUrl = get_File_Url(this.files[0]);if(objUrl)

{//预览图片

var previewImg = $("#previewImg");previewImg.attr("src",objUrl);

}

}

五、cropper.js裁剪

//初始化裁剪插件cropper.js

previewImg.cropper({

dragMode:'move',//拖拽模式

aspectRatio:1,//设置剪裁容器的比例

viewMode:1//视图模式});

cropper= previewImg.data('cropper').getCroppedCanvas();

获取到canvas绘制的剪裁图像之后,你可以直接将canvas作为图片显示,或使用 canvas.toDataURL() 方法获取图像的数据链接(base64格式),或者使用 canvas.toBlob() 方法获取一个blob。

六、上传图片

1、通过ajax上传图片,需要利用 FormData 对象:

var fd = newFormData();

fd.append('uploadfile', file);

$.ajax({

url:'',

type:'post',

data: fd,

cache:false,

processData:false,

contentType:false}).then(function(res){

...

});

2、通过form上传图片:

...

注意:裁剪完图片后(图片上传成功、或者取消)需要销毁已经生成的cropper实例,否则一直存在于裁剪框内影响下一张图片的裁剪:$("#previewImg").cropper('destroy');

七、图片转化为文件

最后一个重点就是如何将已经裁剪好的图片转化为一个文件呢?上面已经通过插件得到了canvas绘制的剪裁图像,需要进行一系列转化形成我们最终需要的文件。

1、通过 canvas.toDataURL() 方法获取图像的数据链接(base64格式),然后将 base64编码转成file文件;

functionbase64_To_File(b64Data, filename) {var block = b64Data.split(';');var contentType = block[0].split(':')[1];var data = block[1].split(',')[1];

var len = data.length;var u8arr = newUint8Array(len);for(var i = 0; i < len; i++){

u8arr[i]=data.charCodeAt(i);

}return newFile([u8arr], filename, {type: contentType});

}

但是这种方法ios低版本不兼容,最好的方法是:base64——>blob ——> file;

2、base64——>blob ——> file

functionbase64_To_File(b64Data, filename) {var block = b64Data.split(';');var contentType = block[0].split(':')[1];var data = block[1].split(',')[1];

var len = data.length;var u8arr = newUint8Array(len);for(var i = 0; i < len; i++){

u8arr[i]=data.charCodeAt(i);

}var blob = newBlob([u8arr], {type: contentType});return newFile([blob], filename , {type: contentType});

}

3、通过 canvas.toBlob(function(blob){console.log(blob);}) 方法直接获取blob对象(类似文件对象),详解见: https://segmentfault.com/a/1190000011563430?utm_source=tag-newest

cropper左右移动_cropper.js移动端使用相关推荐

  1. android h5 多图上传源码,JS移动端/H5同时选择多张图片上传并使用canvas压缩图片...

    最近在做一个H5的项目,里边涉及到拍照上传图片的功能以及识别图片的功能,这里对识别图片的功能不做赘述,不属本文范畴.我在做完并上线项目后,同事跟我提了一个要求是可不可以同时选择多张图片上传,我做的时候 ...

  2. 手机端html5展示pdf,pdf.js移动端展示预览打开pdf-pdfh5.js

    pdf.js移动端展示预览打开pdf-pdfh5.js 本插件基于pdf.js和jQuery,可手势捏合缩放,支持懒加载(即分段加载). 2019.07.18更新:增加npm install pdfh ...

  3. rds基于什么开发_为什么不学基于TypeScript的Node.js服务端开发?

    为什么不学?学不动了吗?!别躺下啊,我扶你起来! 我们早就知道,如今的JavaScript已经不再是当初那个在浏览器网页中写写简单的表单验证.没事弹个alert框吓吓人的龙套角色了.借助基于v8引擎的 ...

  4. animate inater插件_基于animate.css动画库的全屏滚动小插件,适用于vue.js(移动端、pc)项目...

    功能简介 基于animate.css动画库的全屏滚动,适用于vue.js(移动端.pc)项目. 安装 npm install vue-animate-fullpage --save 使用 main.j ...

  5. vue手机端项目php,MintUI基于Vue.js移动端组件库详解

    Mint UI 包含丰富的 CSS 和 JS 组件,能够满足日常的移动端开发需要.接下来通过本文给大家分享Mint UI 基于 Vue.js 移动端组件库,需要的朋友参考下吧,希望能帮助到大家. 官网 ...

  6. 服务器项目混淆,压缩和混淆node.js服务端代码

    压缩和混淆node.js服务端代码 在前端我们有webpack,gulp等构建工具提供了从项目结构搭建到部署打包,基本所有工作流程所需要的都被覆盖到了. 在后台node.js写的服务端却是透明,很多时 ...

  7. 有了这套flexible.js 移动端自适应方案,你就能在移动端的来去自如, (*^__^*)

    flexible.js 移动端自适应方案 一,flexible.js 的使用方式: github地址:https://github.com/amfe/lib-flexible 官方文档地址:https ...

  8. node.js服务端笔记文档学会写接口,学习分类:path、包、模块化、fs、express、中间件、jwt、开发模式、cors。

    node.js 学习笔记 node.js服务端笔记文档学会写接口,path.包.模块化.fs.express.中间件.JWT.开发模式.cors. gitee:代码接口笔记 1什么是node.js n ...

  9. 压缩和混淆node.js服务端代码

    压缩和混淆node.js服务端代码 在前端我们有webpack,gulp等构建工具提供了从项目结构搭建到部署打包,基本所有工作流程所需要的都被覆盖到了. 在后台node.js写的服务端却是透明,很多时 ...

  10. Vuex 数据流管理及Vue.js 服务端渲染(SSR)

    Vuex 数据流管理及Vue.js 服务端渲染(SSR)项目见:https://github.com/smallSix6/fed-e-task-liuhuijun/tree/master/fed-e- ...

最新文章

  1. C++资源之不完全导引(上)
  2. Activiti学习——Activiti与Spring集成
  3. Endnote X3 出现中文乱码
  4. 获取WebView加载的网页内容并进行动态修改
  5. 如何用python打印田字格_如何用 3D 打印一双顶级跑鞋回形针
  6. 数据分析 数据清理_数据清理| 数据科学
  7. WPSmushProv3.7.0图片上传压缩插件-WordPress图像优化插件
  8. SpringBoot--springboot启动类和controller的配置
  9. 异步通信在生活中的例子_通信技术在日常生活中的作用
  10. php html5聊天室源码,Grupo Pro v2 - PHP聊天室源码
  11. Java单链表头插法和尾插法以及增删改查方法
  12. Android出现Could not initialize class com.android.sdklib.repository.AndroidSdkHandler的解决方法
  13. 架构设计基础设施保障(laaS 云虚拟使用 存储 网络 DNS运用 CDN剖析和运用)
  14. Spring计划会议
  15. 实例学习网页制作中常用的网页表单的应用
  16. Oracle 添加主键、索引、删除主键、索引
  17. 微信支付分(三)--完结支付分订单
  18. 传说中的程序员最牛表白方式!
  19. Xz1 android p更新,终于等到:索尼XZ1/XZP港版正式推送Android 9.0更新
  20. 用nvmain配置gem5来模拟非易失内存

热门文章

  1. 32位java jre_64位的jre和32位的jre
  2. 计算机网络管理员中级试题及解析,计算机网络管理员中级考试题及答案(一)(1)...
  3. SqlServer2008创建用户及授予权限
  4. linuxshell如何实现进度条效果
  5. redhat6静默安装oracle11g,redhat6.2静默安装oracle11gr2
  6. 谷粒学院(十六)OAuth2 | 微信扫码登录 | QQ扫码登录
  7. SanDisk cz48 16G TLC U盘量产经验分享
  8. 解决浏览器Adobe Flash Player不是最新版本问题
  9. 从巨潮资讯网获取数据
  10. 没有项目经验,如何书写漂亮的简历?