在vue项目中实现图片打马赛克

使用image-mosaic插件。

安装依赖

npm install image-mosaic -D

项目引用

// .vue 文件
<div id="box"><canvas id="canvas"></canvas><button id='drawAll'>一键加码</button><button id='clearAll'>还原</button>
</div>
import Mosaic from 'image-mosaic'data() {return {imgSrc: 'xxxx'}
},
created() {this.initMosaic()
},
methods: {drawImageToCanvas () {const canvas = document.querySelector('#canvas')const ctx = canvas.getContext('2d')let imageUrlif (this.imgSrc) {imageUrl = this.imgSrc}return new Promise((resolve, reject) => {const image = new Image()image.crossOrigin = 'Annoymous'image.onload = function () {canvas.width = image.widthcanvas.height = image.heightctx.drawImage(this, 0, 0, image.width, image.height)resolve(ctx)}image.src = imageUrl})},initMosaic () {this.drawImageToCanvas().then(ctx => {const mosaic = new Mosaic(ctx)const MouseEvents = {init () {mosaic.context.canvas.addEventListener('mousedown', MouseEvents.mousedown)},mousedown () {mosaic.context.canvas.addEventListener('mousemove', MouseEvents.mousemove)document.addEventListener('mouseup', MouseEvents.mouseup)},mousemove (e) {if (e.shiftKey) {mosaic.eraseTileByPoint(e.layerX, e.layerY)return}mosaic.drawTileByPoint(e.layerX, e.layerY)},mouseup () {mosaic.context.canvas.removeEventListener('mousemove', MouseEvents.mousemove)document.removeEventListener('mouseup', MouseEvents.mouseup)}}MouseEvents.init()document.querySelector('#drawAll').addEventListener('click', () => {mosaic.drawAllTiles()})document.querySelector('#clearAll').addEventListener('click', () => {mosaic.eraseAllTiles()})})}
}

实现功能:

画笔式拖动打码、一键全局打码、还原功能

如果需要获取打码后的图片,可以采用以下方式

var dataURL = document.querySelector('#canvas').toDataURL('image/png')

在vue项目中实现图片打马赛克相关推荐

  1. vue项目中,图片无法显示时或者访问图片出现404时,显示默认图片,但默认图片路径出错

    问题描述 在vue项目中,同样的图片,设置在img的src中能正常显示  设置在img的onerror中不能正常显示 原因 项目启动后, 图片的路径并不是我们写的路径了. 示例:  源代码: // 直 ...

  2. Vue 项目中 Cropper 图片裁剪的使用及遇到的问题

    为什么用 个人中心的头像上传需要对图片进行裁剪 1.安装引入 npm install vue-cropper 在 main.js 中 import VueCropper from 'vue-cropp ...

  3. vue项目中背景图片写成行内样式不显示

    今天写代码的时候发现把背景图片写在行内样式中没法显示 <div class="template-card" style="background-image:url( ...

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

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

  5. Vue.js项目中,当图片无法显示时则显示默认图片

    Vue.js项目中,当图片无法显示时则显示默认图片使用onerror方法 最近在学习Vue时,遇到了一个问题,就是从后台传过来的图片路径无效时,需要在页面显示默认图片 本人试了3种方法,2种方法失败了 ...

  6. vue项目中,js根据文件名后缀,判断文件图片、视频、文档、pdf等类型的方法

    vue项目中,在获得文件名信息,需要根据文件名的后缀来区分文件类型的方法如下:其中,文件后缀可自由拓展. // 根据文件名后缀区分 文件类型/** @param: fileName - 文件名称* @ ...

  7. svg图片在vue项目中的应用

    svg图片在vue项目中的应用 一.安装 svg-sprite-loader 插件 npm install svg-sprite-loader 二.基于 vue-cli2.x 项目 webpack 配 ...

  8. vue+ts项目中import图片时报错Cannot find module ‘xxx‘ or its corresponding type declarations

    TS项目中import图片时报错Cannot find module 'xxx' or its corresponding type declarations 在vue+ts项目中使用import的形 ...

  9. Vue项目中加载图片的坑

    Vue项目中加载图片时,遇到的坑 1.当直接在标签中,使用图片路径,此时可以正常显示. <img src='img_src' /> 正常显示 2.当img标签的src属性为变量时,且该变量 ...

最新文章

  1. EFS 加密文件系统
  2. 基于Android Studio的内存泄漏检测与解决全攻略
  3. css flexbox模型_Flexbox和CSS Grid之间的主要区别
  4. Hive笔记之JOIN的左外链接和右外链接
  5. mysql死锁的排查方法_MySQL死锁系列-线上死锁问题排查思路
  6. 程序迭代时测试操作的要点(后端前端)
  7. 薄板样条插值(Thin plate splines)的实现与使用
  8. 赠书 | 如何建设数据中台?看这份企业数据能力测评就够了!
  9. 数据库建表设计规范及原则
  10. 计算机网络第五次笔记
  11. 计算机一级有几套试卷,计算机一级B十五套试卷
  12. 2021年遥感类SCI期刊JCR分区/中科院分区排名与影响因子汇总
  13. linux文件系统基础知识--目录项 dirent、inode 和数据块
  14. 大数据分析-第十一章 图挖掘-动机,应用和算法
  15. 论文阅读:Deep learning—Yann LeCun, Yoshua Bengio Geoffrey Hinton
  16. 内推 | 字节跳动内推
  17. C语言游戏编程之flappy birds
  18. 微信开发者工具button,input鼠标点击坐标偏移
  19. WebAssembly 在白鹭引擎5.0中的实践
  20. Spring Boot Web应用集成Keycloak进阶之细粒度权限控制

热门文章

  1. Bat大厂程序员常用的IDE工具,你接触过哪些?
  2. Java后台实现pdf文件在浏览器中预览
  3. 金种子集团搭建TurboGate反垃圾邮件网关
  4. 手游服务端框架之自定义orm持久化工具
  5. wifi识别姿态手势相关平台与研究团队
  6. 极速pdf编辑器的水印如何去掉_如何使用极速PDF编辑器修改PDF文档的页面大小?...
  7. 神州信息喜获信创服务15个软件著作权证书
  8. 【聊一聊】程序员的恶性循环 !
  9. shell jq 解析json包含点的key
  10. 高通马达代码分析 msm_actuator