cropper.jsåexif.jså®ç°å¤´åä¸ä¼ 缩æ¾è£åªæ转
程序员文章站
2022-03-24 20:13:27
...
åäºä¸ä¸ªå¤´åä¸ä¼ çå°åè½ï¼åæ¶å¤çäºiosç«çæç §å¾çæ转çé®é¢ãcropper.jsï¼æ³¨æï¼cropperå缩ççjså¨ææºçç缩æ¾å¾çä¼æé»å±åå¾çé£äºçbugï¼æ以建议å¼å ¥å¼åçæ¬çcropperï¼ä¾èµjqueryï¼exifæ¯ç¨æ¥è·åæç §ä¿¡æ¯çï¼ç¨äºä¿®å¤iosç«çæç §æ转çé®é¢ï¼æç¨çæ¯amazeuiæ¡æ¶ï¼æå¨æ件ä¸ä¹å¼å ¥ã
è¿æ¯htmlæ件
<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>cropperå¾çè£åªç¼©æ¾</title>
<link rel="stylesheet" href="css/amazeui.min.css">
<link rel="stylesheet" href="css/cropper.css">
<link rel="stylesheet" href="css/amazeui.cropper.css">
</head>
<body>
<div class="am-form-group">
<label>logo</label>
<div class="am-cf">
<a href="javascript:;" id="up-img-touch" data-am-modal="{target: '#doc-modal-1'}">
<img src="picture-2.jpg" id="pic_img" style="width: 100px;">
<input type="hidden" name="new_pic" id="new_pic" value="">
</a>
</div>
</div>
<!--å¾çä¸ä¼ æ¡-->
<div class="am-popup up-frame-bj " id="doc-modal-1">
<div class="am-modal-dialog up-frame-parent up-frame-radius">
<div class="header_check header_setting">
<a href="javascript:;" class="iconfont" data-am-modal-close>å
³é</a>
<h1>ä¸ä¼ </h1>
</div>
<div class="up-frame-body">
<div class="up-pre-main am-cf" >
<div class="up-pre-before up-frame-radius">
<img alt="" src="" id="image">
</div>
</div>
<div class="upload_btn am-cf">
<div class="am-fl am-form-file">
<button type="button" class="am-btn">ä¸ä¼ å¾ç</button>
<input type="file" id="inputImage">
</div>
<div class="rotateimg">
<span onclick="rotateimgleft()">å·¦</span>
<span onclick="rotateimgright()">å³</span>
</div>
<div class="am-fr">
<button type="button" class="am-btn" id="up-btn-ok" url="admin/user/upload.action">ç¡®å®</button>
</div>
</div>
</div>
</div>
</div>
</body>
<script src="js/jquery.min.js" charset="utf-8"></script>
<script src="js/amazeui.min.js" charset="utf-8"></script>
<script src="js/cropper.js" charset="utf-8"></script>
<script src="js/exif.js" charset="utf-8"></script>
<script src="js/custom_up_img.js" charset="utf-8"></script>
</html>
è¿æ¯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);
}
推荐阅读
-
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
-
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
-
Cropper.js 实现裁剪图片并上传(PC端)
-
jQuery图片剪裁插件Cropper.js的使用
-
cropper.js裁剪图片并上传
-
使用cropper.js裁剪头像的实例代码
-
基于cropper.js封装vue实现在线图片裁剪组件功能
-
exif.js 加载出来的PNG图像背景是黑色的?
-
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
-
Cropper.js 实现裁剪图片并上传(PC端)