欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

cropperjs實(shí)現(xiàn)裁剪圖片功能

 更新時(shí)間:2022年02月23日 17:03:05   作者:zyhzyh1120  
這篇文章主要為大家詳細(xì)介紹了cropperjs實(shí)現(xiàn)裁剪圖片功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了cropperjs實(shí)現(xiàn)裁剪圖片功能的具體代碼,供大家參考,具體內(nèi)容如下

cropperjs (裁剪圖片)

vue版本

// 下載
// npm install cropperjs -save

// 使用
//1.0 引入?
import Cropper from 'cropperjs'

// 2.0初始化裁剪框
?? ?data(){
?? ??? ?return{
?? ??? ??? ?croppable: false // 控制上傳后的顯隱
?? ??? ?}
?? ?},
?? ?
?? ?methods:{
?? ??? ?var _this= this;
?? ??? ?var image = document.getElementById('image');
?? ??? ?this.cropper = new Cropper(image, {
?? ? ? ? ? ?aspectRatio: 1,
?? ? ? ? ? ?viewMode: 1,
?? ? ? ? ? ?background:false,
?? ? ? ? ? ?zoomable:false,
?? ? ? ? ? ?ready: function () {
?? ? ? ? ? ? ?_this.croppable = true;
?? ? ? ? ? ?}
?? ? ? ?});
?? ?}

jq版本

<!--必須引入 jquery.min.js , cropper.min.js?
?? ?樣式引入 css/cropper.min.css css/ImgCropping.css-->
<link rel="stylesheet" href="css/cropper.min.css" >
<link rel="stylesheet" href="css/ImgCropping.css" >
<body>
<button id="replaceImg" class="l-btn">選擇圖片</button>
<div style="width: 320px;height: 320px;border: solid 1px #555;padding: 5px;margin-top: 10px">
? ? <img id="finalImg" src="" width="100%"> <!-- 預(yù)覽圖,一開始為空-->
</div>
<!--圖片裁剪框 start-->
<div style="display: none" class="tailoring-container">
? ? <div class="black-cloth" onClick="closeTailor(this)"></div>
? ? <div class="tailoring-content">
? ? ? ?<div class="tailoring-content-one">
? ? ? ? ? <label title="上傳圖片" for="chooseImg" class="l-btn choose-btn">
? ? ? ? ? ? ?<input type="file" accept="image/jpg,image/jpeg,image/png" name="file" id="chooseImg" class="hidden" onChange="selectImg(this)">選擇圖片
? ? ? ? ? </label>
? ? ? ?<div class="close-tailoring" ?onclick="closeTailor(this)">×</div>
? ? ? ?</div>
? ? ? ? ? ?<div class="tailoring-content-two">
? ? ? ? ? ? ? <div class="tailoring-box-parcel">
? ? ? ? ? ? ? ? ? <img id="tailoringImg" >
? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? <div class="preview-box-parcel">
? ? ? ? ? ? ? ? ?<p>圖片預(yù)覽:</p>
? ? ? ? ? ? ? ? ?<div class="square previewImg"></div>
? ? ? ? ? ? ? ? ?<!-- <div class="circular previewImg"></div> -->
? ? ? ? ? ? ? </div>
? ? ? ? ? ?</div>
? ? ? ? ? ?<div class="tailoring-content-three">
? ? ? ? ? ? ? ?<button class="l-btn cropper-reset-btn">復(fù)位</button>
? ? ? ? ? ? ? ?<button class="l-btn cropper-rotate-btn">旋轉(zhuǎn)</button>
? ? ? ? ? ? ? ?<button class="l-btn cropper-scaleX-btn">換向</button>?
? ? ? ? ? ?</div>
? ? ? <button class="l-btn sureCut" id="sureCut">確定</button>
? ?</div>
</div>
</body>
<!--圖片裁剪框 end-->
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/cropper.min.js"></script>
<script>
?? ?//彈出框水平垂直居中
? ? (window.onresize = function () {
? ? ? ? var win_height = $(window).height();
? ? ? ? var win_width = $(window).width();
? ? ? ? if (win_width <= 768){
? ? ? ? ? ? $(".tailoring-content").css({
? ? ? ? ? ? ? ? "top": (win_height - $(".tailoring-content").outerHeight())/2,
? ? ? ? ? ? ? ? "left": 0
? ? ? ? ? ? });
? ? ? ? }else{
? ? ? ? ? ? $(".tailoring-content").css({
? ? ? ? ? ? ? ? "top": (win_height - $(".tailoring-content").outerHeight())/2,
? ? ? ? ? ? ? ? "left": (win_width - $(".tailoring-content").outerWidth())/2
? ? ? ? ? ? });
? ? ? ? }
? ? })();

? ? //彈出圖片裁剪框
? ? $("#replaceImg").on("click",function () {
? ? ? ? $(".tailoring-container").toggle();
? ? });
? ??
? ? //圖像上傳
? ? function selectImg(file) {
? ? ? ? if (!file.files || !file.files[0]){
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? var reader = new FileReader();
? ? ? ? reader.onload = function (evt) {
? ? ? ? ? ? var replaceSrc = evt.target.result;
? ? ? ? ? ? //更換cropper的圖片
? ? ? ? ? ? $('#tailoringImg').cropper('replace', replaceSrc,false); /**默認(rèn)false,適應(yīng)高度,不失真 */
? ? ? ? }
? ? ? ? reader.readAsDataURL(file.files[0]);
? ? ? ? // console.log(file);
? ? }
? ??
? ? //cropper圖片裁剪
? ? $('#tailoringImg').cropper({
? ? ? ? aspectRatio: 16/9,//默認(rèn)比例
? ? ? ? preview: '.previewImg',//預(yù)覽視圖
? ? ? ? guides: false, ??? ?//裁剪框的虛線(九宮格)
? ? ? ? autoCropArea: 0.8, ?//0-1之間的數(shù)值,定義自動(dòng)剪裁區(qū)域的大小,默認(rèn)0.8
? ? ? ? movable: false, ?? ?//是否允許移動(dòng)圖片
? ? ? ? dragCrop: false, ??? ?//是否允許移除當(dāng)前的剪裁框,并通過拖動(dòng)來新建一個(gè)剪裁框區(qū)域
? ? ? ? movable: true, ??? ?//是否允許移動(dòng)剪裁框
? ? ? ? resizable: true, ??? ?//是否允許改變裁剪框的大小
? ? ? ? zoomable: false, ??? ?//是否允許縮放圖片大小
? ? ? ? mouseWheelZoom: false, ?//是否允許通過鼠標(biāo)滾輪來縮放圖片
? ? ? ? touchDragZoom: true, //是否允許通過觸摸移動(dòng)來縮放圖片
? ? ? ? rotatable: true, ??? ?//是否允許旋轉(zhuǎn)圖片
? ? ? ? crop: function(e) {
? ? ? ? ? ? // 輸出結(jié)果數(shù)據(jù)裁剪圖像。
? ? ? ? ? ? // console.log(e);
? ? ? ? }
? ? });
? ??
? ? ?//旋轉(zhuǎn)
? ? ?$(".cropper-rotate-btn").on("click",function () {
? ? ? ? ?$('#tailoringImg').cropper("rotate", 45);
? ? ?});
? ? ?//復(fù)位
? ? ?$(".cropper-reset-btn").on("click",function () {
? ? ? ? $('#tailoringImg').cropper("reset");
? ? ?});
? ? ?//換向
? ? ?var flagX = true;
? ? ?$(".cropper-scaleX-btn").on("click",function () {
? ? ? ? ?if(flagX){
? ? ? ? ? ? ?$('#tailoringImg').cropper("scaleX", -1);
? ? ? ? ? ? ?flagX = false;
? ? ? ? ?}else{
? ? ? ? ? ? ?$('#tailoringImg').cropper("scaleX", 1);
? ? ? ? ? ? ?flagX = true;
? ? ? ? ?}
? ? ? ? ?flagX != flagX;
? ? ?});

? ? //裁剪后的處理
? ? $("#sureCut").on("click",function () {
? ? ? ? if ($("#tailoringImg").attr("src") == null ){
? ? ? ? ? ? return false;
? ? ? ? }else{
? ? ? ? ? ? var cas = $('#tailoringImg').cropper('getCroppedCanvas');//獲取被裁剪后的canvas
? ? ? ? ? ? var base64url = cas.toDataURL('image/png'); //轉(zhuǎn)換為base64地址形式
? ? ? ? ? ? $("#finalImg").prop("src",base64url);//顯示為圖片的形式
? ? ? ? ? ? // 將base64轉(zhuǎn)換成file對(duì)象
? ? ? ? ? ? var src = dataURLtoFile(base64url);
? ? ? ? ? ? console.log(base64url);
? ? ? ? ? ? console.log(src);
? ? ? ? ? ? closeTailor(); //關(guān)閉裁剪框
? ? ? ? }
? ? });
? ? //關(guān)閉裁剪框
? ? function closeTailor() {
? ? ? ? $(".tailoring-container").toggle();
? ? }
? ??
? ? // 轉(zhuǎn)files
? ? function dataURLtoFile (dataurl, filename = 'file') {
? ? let arr = dataurl.split(',')
? ? let mime = arr[0].match(/:(.*?);/)[1]
? ? let suffix = mime.split('/')[1]
? ? let bstr = atob(arr[1])
? ? let n = bstr.length
? ? let u8arr = new Uint8Array(n)
? ? while (n--) {
? ? ?? ?u8arr[n] = bstr.charCodeAt(n)
? ? }
? ? ?? ?return new File([u8arr], `${filename}.${suffix}`, {type: mime})
? ? }
</script>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論