<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了cropper.js和exif.js實現頭像上傳縮放裁剪旋轉的具體程式碼,供大家參考,具體內容如下
做了一個頭像上傳的小功能,同時處理了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 οnclick="rotateimgleft()">左</span> <span οnclick="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); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45