vue cropper,vuecropper文档

  vue cropper,vuecropper文档

  这篇文章主要为大家详细介绍了武埃-克罗珀实现裁剪图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  本文实例为大家分享了武埃-克罗珀实现裁剪图片的具体代码,供大家参考,具体内容如下

  先展示一下效果

  如何使用:

  1、安装

  新公共管理安装vue-cropper //(如果安装不上,用cnpm)

  2、直接贴代码爽快人就是这样

  模板

  埃尔对话

  title=裁剪图片

  :visible.sync=visible

  @close=onCallback(false)

  class=handleDialog

  宽度= 1000像素

  div class=wrap

  div class=main

  div class=cropperContent

  div class=cropper

  vueCropper

  "庄稼"

  :img=option.img

  :outputSize=option.size

  :outputType=option.outputType

  :info=true

  :full=option.full

  :canMove=option.canMove

  :canMoveBox=option.canMoveBox

  :original=option.original

  :autoCrop=option.autoCrop

  :自动裁剪宽度=选项。自动裁剪宽度

  :auto crophth=选项。“自动裁剪”

  :fixedBox=option.fixedBox

  @realTime=realTime

  @imgLoad=imgLoad

  /vueCropper

  /div

  div class=previewBox

  div class=title 实时预览/div

  差异

  显示预览

  :style={

  宽度:previews.w 像素,

  高度:previews.h px ,

  }

  div:style=预览预览

  img:src=预览。 URL :style=预览。img /

  /div

  /div

  /div

  /div

  div class=footerButton

  div class=scopeButton

  将class=localButton 标记为=上传本地图片/标签

  投入

  type=file

  id=上传

  class=inputFile

  accept=image/png,image/jpeg,image/gif,image/jpg

  @change=uploadImg($event)

  /

  埃尔按钮

  type=primary

  @click=changeScale(1)

  icon=el-icon-plus

  /el-button

  埃尔按钮

  type=primary

  @click=changeScale(-1)

  icon=el-icon-minus

  /el-button

  埃尔按钮

  type=primary

  @click=rotateLeft

  icon=el-icon-refresh-left

  /el-button

  埃尔按钮

  type=primary

  @click=rotateRight

  icon=el-icon-refresh-right

  /el-button

  /div

  div class=uploadButton

  埃尔按钮

  @click=down(blob )

  type=primary

  icon= El-icon-下载

  下载/el-button

  埃尔按钮

  @click=uploadNewPic

  type=primary

  icon=el-icon-upload2

  上传/el-button

  /div

  /div

  /div

  div class=end

  El-button type= primary @ click= save new pic 保存/el-button

  El-button @ click= onCallback(false)取消/el-button

  /div

  /div

  /el-dialog

  /模板

  脚本

  从“vue-cropper”导入{ vue cropper };

  从"服务"导入{ imgView,imgUploadUrl,上传img };

  从" js/yydjs.js "导入{通知};

  导出默认值{

  组件:{ VueCropper },

  data() {

  返回{

  imgView,

  picId: ,

  newPicId: ,

  废话:假的,

  预览:{},

  选项:{

  img: ,

  尺寸:1,

  full: false,//输出原图比例截图小道具名全部

  输出类型: png ,

  可以移动:没错,

  原文:假,

  canMoveBox: false,

  自动裁剪:没错,

  自动裁剪宽度:300,

  自养体重:300,

  固定框:没错,

  },

  向下移动:"#",

  凯特:"",

  比例:1,

  };

  },

  已安装(){

  这个。选项。img=这个。img查看此。picid

  这个。选项。auto crophth=this。选项。自动裁剪宽度*这个。比率;

  },

  方法:{

  saveNewPic() {

  如果(!this.newPicId) {

  返回警报(请上传裁剪后的图片);

  }

  这个。oncallback(这个。newpicid);

  },

  变更比例(数量){

  num=num 1;

  这个参考文献。克罗珀。更改比例(数字);

  },

  rotateLeft() {

  这个参考文献。克罗珀。rotate left();

  },

  向右旋转(){

  这个参考文献。克罗珀。rotator right();

  },

  //实时预览函数

  实时(数据){

  console.log(数据,"实时");

  this.previews=数据

  },

  //将base64转换为文件百度随便找的看需求使用

  数据文件(数据URL,文件名){

  var arr=dataurl.split(,),

  mime=arr[0].匹配(/:(。*?);/)[1],

  bstr=atob(arr[1]),

  n=bstr。长度,

  u8arr=新的uint 8数组(n);

  while (n - ) {

  u8arr[n]=bstr。charcodeat(n);

  }

  返回新文件([u8arr],文件名,{ type:mime });

  },

  uploadNewPic() {

  这个参考文献。克罗珀。获取作物数据((数据)={

  字母名称=新日期()。getTime();

  让文件=这个。dataurltofile(data,` $ { name }。png `);

  console.log(文件,‘SSSS’);

  设FD=new FormData();

  fd.append(file ,file);

  fd.append(cate ,this。cate);

  上传(fd).然后((res)={

  if (res) {

  设{ scalererelativepath= }=RES . body;

  这个。new picid=scalererelativepath

  警报(上传成功,成功);//自己写的弹框

  }

  });

  });

  },

  向下(类型){

  //event.preventDefault()

  var aLink=文档。createelement( a );

  阿林克。download= author-img ;

  //输出

  if (type===blob) {

  这个参考文献。克罗珀。getcropblob((data)={

  console.log(数据,类型);

  this.downImg=window .URL.createObjectURL(数据);

  //alink。下载=这个。down img

  控制台。日志(这个。down img);

  aLink.href=window .URL.createObjectURL(数据);

  阿林克。单击();

  });

  }否则{

  这个参考文献。克罗珀。获取作物数据((数据)={

  this.downImg=data

  aLink.href=data

  阿林克。单击();

  });

  }

  },

  上传(e) {

  //上传图片

  //this.option.img

  var file=e . target。文件[0];

  如果(!/\.(GIF jpg JPEG PNG BMP GIF JPG PNG)$/.测试(目标值)){

  警报(图片类型必须是gif,jpeg,jpg,png,bmp。中的一种);

  返回错误的

  }

  var reader=new FileReader();

  reader.onload=(e)={

  让数据;

  如果(e .目标的类型。result=== object ){

  //把数组缓冲器转化为一滴如果是base64不需要

  数据=窗口URL.createObjectURL(新斑点([例如目标。结果]);

  }否则{

  数据=e .目标。结果;

  }

  这个。选项。img=数据;

  };

  //转化为base64

  //reader.readAsDataURL(文件)

  //转化为一滴

  reader.readAsArrayBuffer(文件);

  },

  imgLoad(消息){

  console.log(msg, msg );

  },

  },

  };

  /脚本

  样式lang=scss 范围

  @ import ~ CSS/public。scss’;handleDialog {

  @ include cententCenterDialog。裁剪内容{

  显示器:flex

  justify-content:space-between;

  左填充:20px。收割者

  宽度:400像素

  高度:400像素

  边框:1px固体# ddd

  }。预览框{

  flex:1;

  显示器:flex

  对齐-内容:居中;

  伸缩方向:列;

  对齐-项目:居中;标题{

  字体大小:18px

  高度:36px

  边距-底部:20px

  }。显示预览{

  flex:1;

  显示器:flex

  对齐-内容:居中;预览{

  溢出:隐藏;

  背景:# eeeeee

  边框:1px纯色#咿咿

  }

  }

  }

  }。页脚按钮{

  边距-顶部:30px

  左边距:20px

  显示器:flex

  justify-content:flex-end;范围按钮{

  宽度:400像素

  显示器:flex

  justify-content:space-between;

  }。上传按钮{

  flex:1;

  显示器:flex

  对齐-内容:居中;

  }。localButton {

  光标:指针;

  颜色:# ffffff

  背景:# 409eff

  填充:10px 15px

  边框半径:3px

  外观:无;

  显示器:flex

  自我对齐:居中;

  右边距:10px

  }。输入文件{

  宽度:180像素

  位置:绝对;

  clip:rect(0 0 0 0);

  }

  }

  }

  /风格

  3、说明,支持网络图片也支持本地图片,图片如果需要上传,我是通过base64转文件,再上传的。

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: