图片剪裁上传插件 - cropper

<style>
.photo-container{float: left;width: 300px;height: 300px;}
.photo-container { padding-left: 10px; box-sizing: border-box; }
.photo-container li{line-height: 20px;}
.photo-container .photo-preview{margin-top: 10px;overflow: hidden;}
.photo-container .photo-preview.col-1{width: 50px; height: 50px;}
.photo-container .photo-preview.col-2{width: 100px; height: 100px;}
</style>
<section>
<div>
<input type="hidden" name="headphoto" id="headphoto" value="" />
<input type="file" name="uploadFile" id="uploadFile" data-width="100" data-height="100" accept="image/*"/>
</div>
<div class="clearfix">
<!--<p class="l-info">插件地址http://fengyuanchen.github.io/cropper</p>-->
<div class="photo-container">
<img id="headerPhoto" src="images/default-header.jpg" />
</div>
<ul class="photo-container">
<li class="photo-preview col-2"></li>
<li class="photo-preview col-1"></li>
</ul>
</div>
</section>
/*
* 头像剪辑插件初始化
*/
var $image = $('#headerPhoto');
var $previews = $('.photo-container .photo-preview');
var $cut = $('#cut');
var URL = window.URL || window.webkitURL;
var blobURL;
//cropper参数信息:https://github.com/fengyuanchen/cropper/blob/v2.1.0/README.md
var option = {
preview: '.photo-preview', //显示预览图片的元素
viewMode: 1, //设置剪裁框的视图模式(0-只在容器内,默认;1-在canvas内;2-容器不在canvas内;3-容器在canvas内)
dragMode: 'move', //设置拖拽模式(crop-创建一个新的剪裁框,默认;move-移动canvas;none-什么都不做)
aspectRatio: 1 / 1, ///*剪裁框比例*/
autoCropArea: 1, //初始剪裁框区域比例0~1
//guides: false, //是否显示剪裁框的虚线,突出裁剪框
//highlight: false, //是否有遮罩的半透明效果
//cropBoxMovable: false, //剪裁框是否可以移动
//cropBoxResizable: false, //是否可以自定义剪裁框的大小
built: function() {},
crop: function(e) {
//设置预览图的大小
/*var imageData = $(this).cropper('getImageData');
var previewAspectRatio = e.width / e.height;//图片宽高比例
$previews.each(function() {
var $preview = $(this);
var previewWidth = $preview.width();
var previewHeight = previewWidth / previewAspectRatio;//通过宽度和宽高比例获得高
var imageScaledRatio = e.width / previewWidth;
$preview.height(previewHeight).find('img').css({
width: imageData.naturalWidth / imageScaledRatio,
height: imageData.naturalHeight / imageScaledRatio,
marginLeft: -e.x / imageScaledRatio,
marginTop: -e.y / imageScaledRatio
});
});*/
}
};
$image.cropper(option); //初始化cropper /*
* 选择头像
*/
$("input[type=file]").on('change', function() {
$inputFileElm = $(this);
img_class=$inputFileElm.attr('id');
var f=this.files[0];
var imgBase64="";
/*if(f.size > 1024*300){
alert("上传图片不要超过300KB");
return;
}*/
option["aspectRatio"] = parseInt($inputFileElm.data("width")) / parseInt($inputFileElm.data("height"))
$image.cropper('destroy').cropper(option);
if (URL) {
var file, files = this.files;//获取file对象
if (!$image.data('cropper')) return;
if (files && files.length) {
file = files[0];
fileName=file.name;
if (/^image\/\w+$/.test(file.type)) { //判断是否是图片格式的文件
blobURL = URL.createObjectURL(file); //转换图片地址
$image.one('built.cropper', function() {
URL.revokeObjectURL(blobURL);
}).cropper('reset').cropper('replace', blobURL); //设置上传的图片
} else {
alert('请选择图片!');
}
}
$inputFileElm.val("");
}
}); /*
* 保存头像
*/
$('.btn-group').on('click','.save',function(){
var imgBase64 = $image.cropper('getCroppedCanvas').toDataURL();//获取剪裁后的图片base64
console.log('[LEO]图片Base64 => ',imgBase64);
$.ajax({
type:"post",
url:"",
data:{
photo:imgBase64
},
async:true,
success:function(res){
if(res == 'ok'){
alert('上传成功');
}else{
alert('上传失败');
}
},
error:function(e){
console.log('[LEO]出错了 => ',e);
}
});
});

图片剪裁上传插件 - cropper的更多相关文章

  1. 纯原生js移动端图片压缩上传插件

    前段时间,同事又来咨询一个问题了,说手机端动不动拍照就好几M高清大图,上传服务器太慢,问问我有没有可以压缩图片并上传的js插件,当然手头上没有,别慌,我去网上搜一搜. 结果呢,呵呵...诶~又全是基于 ...

  2. PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件

    PHP  多图上传,图片批量上传插件,webuploader.js,百度文件上传插件(案例教程) WebUploader作用:http://fex.baidu.com/webuploader/gett ...

  3. 三款不错的图片压缩上传插件(webuploader+localResizeIMG4+LUploader)

    涉及到网页图片的交互,少不了图片的压缩上传,相关的插件有很多,相信大家都有用过,这里我就推荐三款,至于好处就仁者见仁喽: 1.名气最高的WebUploader,由Baidu FEX 团队开发,以H5为 ...

  4. jquery photoClip支持手机端,PC端 本地裁剪图片后上传插件

    支持手机,PC最好的是jquery photoClip插件,下载地址&示例:https://github.com/topoadmin/photoClip demo.html 代码: <! ...

  5. 图片裁剪上传插件——jquery.photoClip.js

    想要裁剪图片上传: 需要依赖的的插件为: [jquery.photoClip.js] 插件[iscroll-zoom.js] 插件[hammer.js] 插件 [lrz.all.bundle.js] ...

  6. 【ASP.NET 插件】zyUpload的HTML5上传插件

    个人能力有限,只能网上找图片批量上传插件,看到一个还不错的插件zyUpload ,可以用来上传文件,但没有.NET 版本,特修改了下用以批量上传图片,效果图如下: update:2016年3月8日 有 ...

  7. 强大的flash头像上传插件(支持旋转、拖拽、剪裁、生成缩略图等)

    今天介绍的这款flash上传头像功能非常强大,支持php,asp,jsp,asp.net 调用 头像剪裁,预览组件插件. 本组件需要安装Flash Player后才可使用,请从http://dl.pc ...

  8. 图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传

    一 . 背景及效果 当前互联网上传文件最多的就是图片文件了,但是传统web图片的截图上传需要:截图保存->选择路径->保存后再点击上传->选择路径->上传->插入. 图片 ...

  9. Jquery自定义图片上传插件

    1 概述 编写后台网站程序大多数用到文件上传,可是传统的文件上传控件不是外观不够优雅,就是性能不太好看,翻阅众多文件上传控件的文章,发现可以这样去定义一个文件上传控件,实现的文件上传的效果图如下: 2 ...

随机推荐

  1. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 6.全局防护Bypass之一些函数的错误使用

    0x01 背景 PHP程序员在开发过程中难免会使用一些字符替换函数(str_replace).反转义函数(stripslashes),但这些函数使用位置不当就会绕过全局的防护造成SQL注入漏洞. 0x ...

  2. DbHelperSQL 判断数据库表结构公用方法

    #region 公用方法        /// <summary>        /// 判断是否存在某表的某个字段        /// </summary>        ...

  3. 虚拟机+ubuntu 图形界面和终端界面的切换

    虚拟机环境,在图形界面和文本界面间切换:1  VMWare虚拟机下,由图形界面切换到文本界面,和虚拟机设置有关,默认VM占用Ctrl+Alt为热键,所以由图形界面切换到文本界面的组合键为: Ctrl+ ...

  4. Nodejs新建博客练习(一)安装express并新建项目

    安装express npm install -g express-generator 新建工程 express blog //新建项目 cd blog && npm install / ...

  5. 【阿里云产品公测】弹性伸缩服务ESS之试用初体验

    弹性伸缩服务ESS之试用初体验 作者:云郎 2014/10/15 阿里云弹性伸缩服务(Elastic Scaling Service)是根据用户的业务需求和策略,自动调整其弹性计算服务器(ECS)的管 ...

  6. 【IT名人堂】何云飞:阿里云数据库的架构演进之路

    [IT名人堂]何云飞:阿里云数据库的架构演进之路 原文转载自:IT168 ​ 如果说淘宝革了零售的命,那么DT革了企业IT消费的命.在阿里巴巴看来,DT时代,企业IT消费的模式变成了“云服务+数据”, ...

  7. Redis缓存异常的容错实现方法( .net)

    using DotNet.Log; /// <summary> /// Redis缓存辅助类 /// /// 修改纪录 /// /// 2015-10-26 版本:1.0 SongBiao ...

  8. Oracle基础 动态SQL语句

    一.静态SQL和动态SQL的概念. 1.静态SQL 静态SQL是我们常用的使用SQL语句的方式,就是编写PL/SQL时,SQL语句已经编写好了.因为静态SQL是在编写程序时就确定了,我们只能使用SQL ...

  9. 剑指Offer29 连续子数组最大和

    /************************************************************************* > File Name: 29_Greate ...

  10. 京东2017 C++一面

    一面直接跪,日 1. 重写和重载的区别                            答的一般 2. C++内存分配方式                           不会 3. TCP ...