關於croptool無法裁剪分辯率過低的圖片
阿新 • • 發佈:2022-04-04
在使用croptool.js時,如果圖片的解析度過低,則無法裁剪超過解析度的大小。比如說
function chooseImg(event){ var files = event.files || event.dataTransfer.files, file = files[0] || files; event.value = ''; window.clip = new Clip({ dragBoxClass: 'block', //裁剪框類名 clipRadio: 1 / 1, //裁剪比例 寬/高 傳0或空或不傳等於不設定比例 //單位px 僅為裁剪框的寬高 不等同裁剪後最終圖片寬高 initialHeight: 100, //裁剪框初始高度 initialWidth: 100, //裁剪框初始寬度 minHeight: 100, //裁剪框最小高度 minWidth: 100, //裁剪框最小寬度 maxWidth: 450, //裁剪框最大寬度 不會大於裁剪區域寬度 取值需大於最小寬高 maxHeight: 450, //裁剪框最大高度 不會大於裁剪區域高度 cornerColor: '#39f', //裁剪框顏色 encode: 'base64', //檔案型別 type: 'png', //儲存圖片型別 name: 'img', //檔名字 quality: 1, //壓縮質量 //裁剪完成 onDone: function (e) { console.log(e); //return false; document.getElementById('previewImg').src = e; }, onCancel: function(){ } }); clip.setSize(file); }
在上面這個函式中,明確說明裁剪框最大的高度和寬度為450,但是如果選擇圖片檔案的解析度為180*180,那麼裁剪框的最大裁剪範圍也會變成180*180。
注意css樣式。此時裁剪框最大是180*180;
解決方法:開啟croptool.js做以下修改 找到以下兩個三元運算 _this.opt.maxWidth=parseInt(_this.opt.maxWidth>w?w:_this.opt.maxWidth);_this.opt.maxHeight=parseInt(_this.opt.maxHeight>h?h:_this.opt.maxHeight); 修改為
_this.opt.maxWidth=parseInt(_this.opt.maxWidth>w?_this.opt.maxWidth:_this.opt.maxWidth);
_this.opt.maxHeight=parseInt(_this.opt.maxHeight>h?_this.opt.maxHeight:_this.opt.maxHeight); 修改後效果:
因為使用開發者工具所以裁剪區域變形,不使用開發者工具時是正常的。重點是css樣式。