vue-cropperjs,vue cropper

  vue-cropperjs,vue cropper

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

  

前言

  这两天想给图片添加一个图片裁剪的功能,因为之前的图片都是直接上传的,很多图片肯定在前台显示的时候,都不能很好的达到我们想要的效果,因此就需要我们在对个别图片进行细微调整,已达到我们的目的。

  

图片裁剪

  关于图片裁剪我在开源代码库中找到了两种

  呜呜呜图像-裁剪-上传这两种的样式分别如下所示:

  首先是vue-图像-裁剪-上传,我们能够发现其实这个截图有点类似于我们需要裁减头像的时候,才需要使用的,而针对于特定的矩形,可能没办法达到我们的效果

  其次我们再看武埃-克罗珀图片裁剪,它是可以根据我们的实际需求进行裁剪,所以综上可能下面这块比较适合现在的项目需求,但是我们也可以使用上面的这款作为头像裁剪的组件。

  裁剪后的效果:

  引入武埃-克罗珀

  安装依赖

  新公共管理安装vue-cropper -保存

  页面引入

  从“vue-cropper”导入VueCropper

  申明组件

  组件:{

  VueCropper,

  },

  完整代码

  !-裁剪图片-

  模板

  div class=wrapper

  div class= model v-show= model @ click= model=false

  div class=model-show

  img :src=modelSrc alt=

  /div

  /div

  div class=内容

  div class=" show-info "

  氘自动生成截图框固定比例宽:高=4 : 3/h2

  测试

  vueCropper ref=cropper2

  :img=example2.img

  :outputSize=example2.size

  :输出类型=示例2。输出类型

  :info=example2.info

  :canScale=example2.canScale

  :autoCrop=example2.autoCrop

  :自动裁剪宽度=示例2。自动裁剪宽度

  :自动裁剪=示例2。“自动裁剪”

  :fixed=example2.fixed

  :定数=例2。固定数量

  :放大=4/vueCropper

  /div

  为="上传2"标注class="BTN "上传/标签

  “输入类型=“文件”id=“上载2”style=“位置:绝对;”clip:rect(0 0 0 0);

  accept=image/png,image/jpeg,image/gif,image/jpg @ change= upload img($ event,2)

  按钮@ click=完成2() class= BTN 裁剪/按钮

  /div

  /div

  /div

  /模板

  脚本

  从“vue-cropper”导入VueCropper

  //从“阿里-oss”导入*作为OSS

  导出默认值{

  组件:{

  VueCropper,

  },

  data() {

  返回{

  型号:假的,

  型号Src: ,

  废话:假的,

  预览:{},

  表单:{

  标题:""

  },

  示例2: {

  //img的路径自行修改

  img: $oss.url \/\ form.head ,

  信息:真实,

  尺寸:1,

  输出类型:“JPEG”,

  坎斯卡:没错,

  自动裁剪:没错,

  //只有自动截图开启宽度高度才生效

  自动裁剪宽度:300,

  自养体重:250,

  固定:真的,

  //真实的输出宽高

  信息真实:真的,

  固定号码:[4,3]

  },

  向下图像:" # "

  }

  },

  方法:{

  //点击裁剪,这一步是可以拿到处理后的地址

  finish2() {

  这个参考文献。庄稼2。getcropdata((data)={

  this.modelSrc=data

  this.model=false

  //裁剪后的图片显示

  这个。例2。img=这个。型号RC;

  //this.toBlob(数据)

  //console.log(数据)

  //console.log(this.toBlob(data))

  //将图片上传服务器中

  })

  },

  上传(e,num) {

  //上传图片

  this.example2.img=

  var file=e.target.files[0]

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

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

  返回错误的

  }

  var reader=new FileReader()

  reader.onload=(e)={

  让数据

  数据=e。目标。结果

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

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

  数据=窗口URL.createObjectURL(新Blob([e.target.result]))

  }否则{

  数据=e。目标。结果

  }

  if (num===1) {

  this.option.img=data

  } else if (num===2) {

  this.example2.img=data

  }

  }

  //转化为base64

  //reader.readAsDataURL(文件)

  //转化为博客

  reader.readAsArrayBuffer(文件)

  },

  //base64转一滴

  toBlob(ndata) {

  //ndata为base64格式地址

  console.log(ndata)

  让arr=ndata.split(,),

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

  bstr=atob(arr[1]),

  n=bstr。长度,

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

  while (n - ) {

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

  }

  返回新的Blob([u8arr],{

  类型:哑剧

  })

  }

  },

  }

  /脚本

  风格

  * {

  边距:0;

  填充:0;

  }。内容{

  边距:自动;

  最大宽度:585像素

  边距-底部:100像素

  }。测试按钮{

  显示器:flex

  柔性包装:缠绕;

  }。btn {

  显示:内嵌-块;

  行高:1;

  空白:nowrap

  光标:指针;

  背景:# fff

  边框:1px实心# c0ccda

  颜色:# 1 f2d 3d

  文本对齐:居中;

  框大小:边框-框;

  大纲:无;

  边距:20像素10像素0像素0像素

  填充:9像素15像素

  字体大小:14px

  边框-半径:4px

  颜色:# fff

  背景色:# 50bfff

  边框颜色:# 50bfff

  过渡:所有. 2s放松

  文字-装饰:无;

  用户选择:无;

  }。des {

  行高:30px

  }

  code.language-html {

  填充:10px 20px

  边距:10px 0px

  显示:块;

  背景色:# 333;

  颜色:# fff

  溢出-x:自动;

  font-family: Consolas,Monaco,Droid,Sans,Mono,Source,Code,Pro,Menlo,Lucida,Sans,Type,Writer,Ubuntu,Mono;

  边框半径:5px

  空白:前

  }。显示信息{

  边距-底部:50px

  }。显示信息h2 {

  行高:50px

  }

  /*.标题,标题:悬停,标题-焦点,标题:已访问{

  颜色:黑色;

  }*/。标题{

  显示:块;

  文字-装饰:无;

  文本对齐:居中;

  行高:1.5;

  边距:20px 0px

  背景-图像:-网络工具包-线性-渐变(左、#3498db、#f47920 10%、#d71345 20%、#f7acbc 30%、#ffd400 40%、#3498db 50%、#f47920 60%、#d71345 70%、#f7acbc 80%、#ffd400 90%、# 3498 db);

  颜色:透明;

  -网络工具包-背景-剪辑:文本;

  背景尺寸:200% 100%;

  动画:幻灯片5s无限线性;

  字体大小:40px

  }。测试{

  身高:285像素

  }。型号{

  位置:固定;

  z指数:10;

  宽度:100vw

  身高:100vh

  溢出:自动;

  top:0;

  左:0;

  背景:rgba(0,0,0,0.8);

  }。模特秀{

  显示器:flex

  对齐-内容:居中;

  对齐-项目:居中;

  宽度:100vw

  身高:100vh

  }。模型img {

  显示:块;

  边距:自动;

  最大宽度:80%;

  用户选择:无;

  背景-位置:0px 0px,10px 10px

  背景-尺寸:20像素20像素

  背景图像:线性梯度(45度,#eee 25%,透明25%,透明75%,#eee 75%,#eee 100%),线性梯度(45度,#eee 25%,白色25%,白色75%,#eee 75%,# eee 100%);

  }。c项{

  显示:块;

  填充:10px 0;

  用户选择:无;

  }

  @关键帧幻灯片{

  0% {

  背景-位置:0 0;

  }

  100% {

  背景-位置:-100% 0;

  }

  }

  @媒体屏幕和(最大宽度:1000像素){。内容{

  最大宽度:90%;

  边距:自动;

  }。测试{

  高度:400像素

  }

  }

  /风格

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

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

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