图片预览裁切有两种方法,结合服务器的图片上传预览或者纯客户端实现上传图片预览。
纯客户端实现上传图片预览 :
定义一个input标签 type设置为file 设置自带的属性hidden
<input type="file" hidden ref="file" @change="onFileChange" />
对选择器表单进行隐藏,点击头像触发input表单的点击事件@click="$refs.file.click()"
在change事件中获取文文件对象
const file = fileInput.files[0]
设置图片的 src
this.img = window.URL.createObjectURL(file)
file-input 如果选择了同一个文件不会触发change事件
解决方法就是每次使用完毕 把他的value清空
this.$refs.file.value = ''

引用第三方库cropperjs处理图片裁切

npm install cropperjs
import 'cropperjs/dist/cropper.css'
import Cropper from 'cropperjs'

因为要操作DOM,所以要在组件初始化之后再调用

mounted() {const image = this.$refs.imgthis.cropper = new Cropper(image, {viewMode: 1,dragMode: 'move',aspectRatio: 1,autoCropArea: 1,cropBoxMovable: false,cropBoxResizable: false,background: false})}

项目要求默认配置

         viewMode: 1,dragMode: 'move',aspectRatio: 1,autoCropArea: 1,cropBoxMovable: false,cropBoxResizable: false,background: false

如果是基于服务端的裁切,则使用:getData 方法,该方法得到裁切的区域参数然后传给服务端。

this.cropper .getData()

如果是纯客户端的图片裁切,则使用:getCroppedCanvas 方法,该方法得到裁切之后的图片对象(类似于URL.createObjectURL 方法得到的文件对象)。

// 获取裁切的文件对象
cropper.getCroppedCanvas().toBlob((blob) => {console.log(blob)}

发送请求

try {// 如果接口要求 Content-type是 multipart/form-data// 则你必须传递fromdata对象const formData = new FormData()formData.append('photo', blob)const { data } = await changeUserPhoto(formData)console.log(data)// 关闭弹出层this.$emit('close')// 更新视图this.$emit('update-photo', data.data.photo)this.$toast.success('上传成功!')} catch (err) {this.$toast.fail('上传失败!')console.log(err)}

图片预览裁切有两种方法,结合服务器的图片上传预览或者纯客户端实现上传图片预览。
纯客户端实现上传图片预览 :
定义一个input标签 type设置为file 设置自带的属性hidden

<input type="file" hidden ref="file" @change="onFileChange" />

对选择器表单进行隐藏,点击头像触发input表单的点击事件@click="$refs.file.click()"
在change事件中获取文文件对象
const file = fileInput.files[0]
设置图片的 src
this.img = window.URL.createObjectURL(file)
file-input 如果选择了同一个文件不会触发change事件
解决方法就是每次使用完毕 把他的value清空
this.$refs.file.value = ''

引用第三方库cropperjs处理图片裁切

npm install cropperjs
import 'cropperjs/dist/cropper.css'
import Cropper from 'cropperjs'

因为要操作DOM,所以要在组件初始化之后再调用

mounted() {const image = this.$refs.imgthis.cropper = new Cropper(image, {viewMode: 1,dragMode: 'move',aspectRatio: 1,autoCropArea: 1,cropBoxMovable: false,cropBoxResizable: false,background: false})}

项目要求默认配置

     viewMode: 1,dragMode: 'move',aspectRatio: 1,autoCropArea: 1,cropBoxMovable: false,cropBoxResizable: false,background: false

如果是基于服务端的裁切,则使用:getData 方法,该方法得到裁切的区域参数然后传给服务端。

this.cropper .getData()
如果是纯客户端的图片裁切,则使用:getCroppedCanvas 方法,该方法得到裁切之后的图片对象(类似于URL.createObjectURL 方法得到的文件对象)。

// 获取裁切的文件对象

cropper.getCroppedCanvas().toBlob((blob) => {console.log(blob)}

发送请求

try {// 如果接口要求 Content-type是 multipart/form-data// 则你必须传递fromdata对象const formData = new FormData()formData.append('photo', blob)const { data } = await changeUserPhoto(formData)console.log(data)// 关闭弹出层this.$emit('close')// 更新视图this.$emit('update-photo', data.data.photo)this.$toast.success('上传成功!')} catch (err) {this.$toast.fail('上传失败!')console.log(err)}

cropperjs处理图片预览裁切功能相关推荐

  1. SupeSite后台添加新闻增加【预览】功能

    SupeSite后台添加新闻增加[预览]功能 实现目的:为了添加新闻时候更方便! 实现原因:添加新闻时候可能有些样式会出现错误,生成静态页之后再去看的时候会比较浪费时间. 实现步骤: 1.在后台找到a ...

  2. 给FlvDownloader加了一个视频预览的功能

    今天晚上给FlvDownloader加了一个视频预览的功能,内嵌了一个Flv播放器,现在可以一边下一边播放了,功能集成后在使用用上比上个版本的预览功能要方便不少,不用两边拷贝地址了. 并且基本功能都比 ...

  3. 前端学习(2698):重读vue电商网站19之处理图片预览操作

    图片预览窗可以用 el-dialog 组件来做,然后通过 on-preview 函数来处理图片预览的操作. Js <!-- 图片预览 --> <el-dialog title=&qu ...

  4. 计算机窗口预览图,window_Win7系统资源管理器加上预览窗格功能的方法,  图片缩略图是否太小?PPT - phpStudy...

    Win7系统资源管理器加上预览窗格功能的方法 图片缩略图是否太小?PPT如果预览一下是不是更好寻找文件?小编此次带来的一个比较实用的功能--在Win7系统的资源管理器开启窗格预览功能,不仅可以在右侧预 ...

  5. 上传身份证照片js_html+css+js 实现拍照预览上传图片功能

    前言:我们在做网页时经常会需要有上传图片的需求,可能是选择图片或者拍照上传,如果简单的使用这种方式虽然也能实现功能,但用户体验上可能会差了一些,所以本文记录了使用css+js实现图片选中后的预览及压缩 ...

  6. win7计算机右边预览,Win7系统资源管理器加上预览窗格功能的方法

    图片缩略图是否太小?PPT如果预览一下是不是更好寻找文件?小编此次带来的一个比较实用的功能--在Win7系统的资源管理器开启窗格预览功能,不仅可以在右侧预览图片大图,还能预览PPT.表格文件等文件,便 ...

  7. 酷播更新了html5和flash播放器的优先级选项和收费预览视频功能

    感觉要变天了,灰蒙蒙的.好久没有下雨了... 应用场景说明: 1. 实现让用户预览一小段视频节目: 2. 设定一个预览时间,比如15秒,播放完15秒后,弹出对话框,提示用户须注册(或须付费购买): 3 ...

  8. typora 浏览器预览_功能演示丨Adobe Xd安卓手机实时预览教程

    记得把我设为星标哦,不然就看不到我了 距离我们发布实时预览这个功能已经过去了一个月,这篇攻略上的有点晚但是很必要,请使用安卓设备的同学们请查收~ 我们需要尊重一下使用安卓手机的设计师们,并不是所有的设 ...

  9. android拍照功能无预览,Android快速实现无预览拍照功能

    本文实例为大家分享了Android实现无预览拍照功能的具体代码,供大家参考,具体内容如下 实现思路: 把预览的SurfaceView的宽高设置为肉眼看不出的值,例如0.1dp,其他的就是自定义相机的标 ...

最新文章

  1. spring boot 服务 正确关闭方式
  2. 初学者如何在一周内熟练掌握python?
  3. HTML5实践之歌词同步播放器
  4. 聊聊高并发(三十六)Java内存模型那些事(四)理解Happens-before规则
  5. cassss服务未启动_Mysql无法启动情况下,如何恢复数据呢?
  6. NGUI_2.6.3_(3D视图ScrollView)
  7. MySQL UTF8与UTF8MB4
  8. Android下USB的虚拟串口功能
  9. mysql 数据恢复软件_Recovery Toolbox for MySQL(MySQL数据库修复软件)
  10. TTU智能配电终端_【TMT投资】智能配电网简析(上)
  11. php怎么更换图片背景的软件,如何更换照片背景
  12. Unity Shader - GrabPass 实现武器热扭曲拖尾效果
  13. 几行代码解决京东购物界面
  14. [基础]-beautifulsoup模块使用详解
  15. c语言统计字母字符数字字符个数,C语言统计字符个数代码分享
  16. makefile中一些符号的含义
  17. loadrunner入门教程(11)--回放脚本
  18. 搭建线上网校?推荐这套Github上最好的开源网校系统
  19. php生成11位不重复数字,【PHP】php生成一个不重复的数字(订单号、会员号)
  20. N9发布固件更新,MeeGo/Maemo团队离开诺基亚

热门文章

  1. 【案例9】sysConfig 中文乱码(方块)
  2. 对话框屏蔽Esc键的方法
  3. 快速完成批量图片压缩,你需要这款图片压缩神器!
  4. 转: 网页设计中的一些色彩搭配技巧
  5. 微信分身 服务器,看了这个,你还敢用分身版微信吗?
  6. Linux操作系统第一讲
  7. mysql .xb文件恢复
  8. 【域控管理】域控的必要性
  9. 龙与地下城用户名_多用户地下城如何教我编程
  10. 安卓 解析软件包时出现问题