按原比例裁剪图片并且不失真。

安装:

cnpm install vue-cropper --save-dev

使用:

选择图片

ref="cropper"

: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"

:autoCropWidth="option.autoCropWidth"

:autoCropHeight="option.autoCropHeight"

:fixedBox="option.fixedBox"

@realTime="realTime"

@imgLoad="imgLoad"

>

import VueCropper from 'vue-cropper'

import Api from '@/js/api.js' //接口url配置文件

export default {

data() {

return {

headImg:'',

//剪切图片上传

crap: false,

previews: {},

option: {

img: '',

outputSize:1, //剪切后的图片质量(0.1-1)

full: false,//输出原图比例截图 props名full

outputType: 'png',

canMove: true,

original: false,

canMoveBox: true,

autoCrop: true,

autoCropWidth: 150,

autoCropHeight: 150,

fixedBox: true

},

fileName:'', //本机文件地址

downImg: '#',

imgFile:'',

uploadImgRelaPath:'', //上传后的图片的地址(不带服务器域名)

}

},

components: {

VueCropper

},

methods: {

//放大/缩小

changeScale(num) {

console.log('changeScale')

num = num || 1;

this.$refs.cropper.changeScale(num);

},

//坐旋转

rotateLeft() {

console.log('rotateLeft')

this.$refs.cropper.rotateLeft();

},

//右旋转

rotateRight() {

console.log('rotateRight')

this.$refs.cropper.rotateRight();

},

//上传图片(点击上传按钮)

finish(type) {

console.log('finish')

let _this = this;

let formData = new FormData();

// 输出

if (type === 'blob') {

this.$refs.cropper.getCropBlob((data) => {

let img = window.URL.createObjectURL(data)

this.model = true;

this.modelSrc = img;

formData.append("file", data, this.fileName);

this.$http.post(Api.uploadSysHeadImg.url, formData, {contentType: false, processData: false, headers:{'Content-Type': 'application/x-www-form-urlencoded'}})

.then((response)=>{

var res = response.data;

if(res.success == 1){

$('#btn1').val('');

_this.imgFile = '';

_this.headImg = res.realPathList[0]; //完整路径

_this.uploadImgRelaPath = res.relaPathList[0]; //非完整路径

_this.$message({  //element-ui的消息Message消息提示组件

type: 'success',

message: '上传成功'

});

}

})

})

} else {

this.$refs.cropper.getCropData((data) => {

this.model = true;

this.modelSrc = data;

})

}

},

// 实时预览函数

realTime(data) {

console.log('realTime')

this.previews = data

},

//下载图片

down(type) {

console.log('down')

var aLink = document.createElement('a')

aLink.download = 'author-img'

if (type === 'blob') {

this.$refs.cropper.getCropBlob((data) => {

this.downImg = window.URL.createObjectURL(data)

aLink.href = window.URL.createObjectURL(data)

aLink.click()

})

} else {

this.$refs.cropper.getCropData((data) => {

this.downImg = data;

aLink.href = data;

aLink.click()

})

}

},

//选择本地图片

uploadImg(e, num) {

console.log('uploadImg');

var _this = this;

//上传图片

var file = e.target.files[0]

_this.fileName = file.name;

if (!/\.(gif|jpg|jpeg|png|bmp|GIF|JPG|PNG)$/.test(e.target.value)) {

alert('图片类型必须是.gif,jpeg,jpg,png,bmp中的一种')

return false

}

var reader = new FileReader();

reader.onload =(e) => {

let data;

if (typeof e.target.result === 'object') {

// 把Array Buffer转化为blob 如果是base64不需要

data = window.URL.createObjectURL(new Blob([e.target.result]))

}

else {

data = e.target.result

}

if (num === 1) {

_this.option.img = data

} else if (num === 2) {

_this.example2.img = data

}

}

// 转化为base64

// reader.readAsDataURL(file)

// 转化为blob

reader.readAsArrayBuffer(file);

},

imgLoad (msg) {

console.log('imgLoad')

console.log(msg)

}

},

}

.info {

width: 720px;

margin: 0 auto;

.oper-dv {

height:20px;

text-align:right;

margin-right:100px;

a {

font-weight: 500;

&:last-child {

margin-left: 30px;

}

}

}

.info-item {

margin-top: 15px;

label {

display: inline-block;

width: 100px;

text-align: right;

}

.sel-img-dv {

position: relative;

.sel-file {

position: absolute;

width: 90px;

height: 30px;

opacity: 0;

cursor: pointer;

z-index: 2;

}

.sel-btn {

position: absolute;

cursor: pointer;

z-index: 1;

}

}

}

}

.cropper-content{

display: flex;

display: -webkit-flex;

justify-content: flex-end;

-webkit-justify-content: flex-end;

.cropper{

width: 260px;

height: 260px;

}

.show-preview{

flex: 1;

-webkit-flex: 1;

display: flex;

display: -webkit-flex;

justify-content: center;

-webkit-justify-content: center;

.preview{

overflow: hidden;

border-radius: 50%;

border:1px solid #cccccc;

background: #cccccc;

margin-left: 40px;

}

}

}

.cropper-content .show-preview .preview {margin-left: 0;}

js/api.js文件是配置的{接口地址}。

粘贴好用。

git 裁切_Vue + ccropper.js裁切图片(vue-cropper)相关推荐

  1. Vue + ccropper.js裁切图片(vue-cropper)

    有什么问题可以加我的微信,有问必答. 致力于技术分享 按原比例裁切图片,不失真 安装: cnpm install vue-cropper 使用: import VueCropper from 'vue ...

  2. Vue项目中使用图片裁切器 cropperjs (头像裁切)

    cropperjs官方文档 cropperjs结合element-ui 组件后的显示效果: 1. npm 安装 cropperjs cmd命令行输入:npm install cropperjs --s ...

  3. vue本地上传并预览php,vue.js 实现图片本地预览 裁剪 压缩 上传功能

    以下代码涉及 Vue 2.0 及 ES6 语法. 目标 纯 javascrpit 实现,兼容ie9及以上浏览器,在本地做好文件格式.长宽.大小的检测,减少浏览器交互. 现实是残酷的,为了兼容Ie9 还 ...

  4. js 移动端 滑块验证码插件_VUE技术详解,Vue.js从入门到精通

    [Vue.js简介] Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue采用自底向上增量开发的设计.Vue的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整 ...

  5. vue 图片裁剪工具_使用Vue.js的图片裁剪工具,包括预览

    vue 图片裁剪工具 Vue作物 (vue-crop) Images Crop tool with Vue.js including preview. 使用Vue.js的图片裁剪工具,包括预览. Vi ...

  6. js定义全局变量 vue页面_vue项目中定义全局变量、函数的几种方法

    前言 在项目中,经常会复用一些变量和函数,比如用户的登录token,用户信息等.这时将它们设为全局的就显得很重要了,全局变量和全局函数之间有一些相通之处,它们其实很简单,但是有些人可能还不太了解.简单 ...

  7. cropper.js 裁剪图片并上传(文档翻译+demo)(转)

    官网http://fengyuanchen.github.io/cropper/ 文档https://github.com/fengyuanchen/cropper/blob/master/READM ...

  8. js截取图片 裁剪图片之cropper.js插件用法详解

    js截取图片 裁剪图片之cropper.js插件用法详解 源码:https://github.com/fengyuanchen/cropper 引入+使用 <link href="/p ...

  9. 前端图片裁剪cropper.js

    背景:我们在项目中常常都会有更换登陆人头像的需求,这个很简单直接上传一张图片展示就可以了,但是如果上传的图片需要剪裁成正方形的话就需要我们来做一些特殊的处理: 这里我们会用到一个图片剪裁插件:crop ...

最新文章

  1. vim 直接跳转到标签
  2. java excel表格数据导入
  3. input和textarea的区别
  4. Oracle二三事之 12c 可插拔数据库PDB
  5. 花了10块钱,我在朋友圈成为了富豪...
  6. 成员变量与局部变量的区别
  7. 官方demo修改后的webuploader上传预览图片(兼容IE8) github下载回来的有问题
  8. Arcpy 实现批量按掩膜提取
  9. 029——VUE中键盘语义修饰符
  10. 【深度好文】企业数字化转型的核心要素及能力架构分析
  11. vue集成环信Web IM
  12. ffmpeg m3u8 与 mp4 相互转换
  13. “热榜第一”阿里年薪80W的Java架构师,到底是有着怎样的水平?
  14. 开关电源产生浪涌电流的原因
  15. MyEcplise_Maven搭建SSM框架
  16. 《般若波罗蜜多心经》白话文翻译版本
  17. (华师)2021春季课程作业1
  18. 鹏业软件问题处理记录
  19. 基于STM32的无线体感仿生机械手的设计与实现
  20. 【转】从人类简史到今日简史,简史三部曲,尤瓦尔赫拉利的进阶之路

热门文章

  1. SlopOne推荐算法
  2. 5.OD-条件断点、条件记录断点
  3. 非常精确的测试运行时间(比clock()更精确些)
  4. Python平衡点问题
  5. docker 容器基础技术
  6. 对于短信平台呼叫状态机的调查
  7. 腾讯会议核心数据库TDSQL,如何做到快速无损在线扩容?
  8. nginx源码分析—数组结构ngx_array_t
  9. NodeJS开发c++扩展模块
  10. ubuntu16 redis5.0以前版本集群部署示例