1. 程式人生 > 其它 >關於croptool無法裁剪分辯率過低的圖片

關於croptool無法裁剪分辯率過低的圖片

在使用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樣式。