具体内容如下头像上传的小功能.js文件这是js
本文实例为大家分享了cropper.js和exif.js实现头像上传缩放裁剪旋转的具体代码,供大家参考,具体内容如下
做了一个头像上传的小功能,同时处理了ios竖着拍照图片旋转的问题。cropper.js(注意:cropper压缩版的js在手机版版缩放图片会有黑屏和图片飞了的bug,所以建议引入开发版本的cropper)依赖jquery,exif是用来获取拍照信息的,用于修复ios竖着拍照旋转的问题,我用的是amazeui框架js裁剪上传图片的插件js裁剪上传图片的插件,我在文件中也引入。
这是html文件
<pre class="brush:xhtml;">
cropper图片裁剪缩放
logo
[
][3]
关闭
#上传
上传图片
左
右
确定
</pre>
这是js文件
<pre class="brush:js;">$(function() {
'use strict';
// 初始化
var $image = $('#image');
$image.cropper({
aspectRatio:1/1,
viewMode : 1,
autoCropArea:0.8,
dragMode:'move',
cropBoxMovable:false,
cropBoxResizable:false,
zoomOnTouch:true,
zoomable:true,
movable:true,
});
var $inputImage = $('#inputImage');
var URL = window.URL || window.webkitURL;
var Orientation
var rotate_num
var blobURL;
if (URL) {
$inputImage.change(function () {
var files = this.files;
var file;
if (files && files.length) {
file = files[0];
if (/^image/w+$/.test(file.type)) {
blobURL = URL.createObjectURL(file);
$image.attr("src",blobURL)
EXIF.getData(file, function() {
EXIF.getAllTags(this);
Orientation = EXIF.getTag(this, 'Orientation');
});
$image.one('built.cropper', function () {
// Revoke when load complete
URL.revokeObjectURL(blobURL);
}).cropper('reset', true).cropper('replace', blobURL);
$inputImage.val('');
} else {
window.alert('Please choose an image file.');
}
}
});
} else {
$inputImage.prop('disabled', true).parent().addClass('disabled');
}
$('#up-btn-ok').on('click',function(){
var img_src=$image.attr("src");
if(img_src==""){
$('#my-alert').modal('open');
return false;
}
var url=$(this).attr("url");
var canvas=$("#image").cropper('getCroppedCanvas');
var cv_img = document.createElement("canvas");
var ctx = cv_img.getContext("2d");
var x = canvas.width/2;
var y = canvas.height/2;
cv_img.width =canvas.width;
cv_img.height =canvas.width;
ctx.clearRect(0,0, canvas.width, canvas.height);//先清掉画布上的内容
ctx.translate(x,y);//将绘图原点移到画布中点
if(Orientation == 6) {
ctx.rotate(Math.PI/2);
} else if(Orientation == 3) {
ctx.rotate(-Math.PI/2);
} else if(Orientation == 8) {
ctx.rotate(Math.PI/1);
}
ctx.translate(-x,-y);//将画布原点移动
ctx.drawImage(canvas,0,0);
var data=cv_img.toDataURL("image/jpeg");
$("#pic_img").attr("src",data)
$('#new_pic').val($("#pic_img").attr("src"));
$('#doc-modal-1').modal('close');
});
});
function rotateimgright() {
$("#image").cropper('rotate', 90);
}
function rotateimgleft() {
$("#image").cropper('rotate', -90);
}
function set_alert_info(content){
$("#alert_content").html(content);
}</pre>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持站长源码网。
发表评论
热门文章
Spimes主题专为博客、自媒体、资讯类的网站设计....
一款个人简历主题,可以简单搭建一下,具体也比较简单....
仿制主题,Typecho博客主题,昼夜双版设计,可....
用于作品展示、资源下载,行业垂直性网站、个人博客,....
尘集杂货铺和官网1t5-cn
11月11日
[已回复]
希望主题和播放器能支持SQLite数据库,AI能多个讯飞星火