vue + canvas 图片加水印
思路:将两张图片绘制为一张
目标:输入的文字,绘制到图片上,简单实现图片水印
效果:输入的文字1: ‘你猜猜’ + 图片2 = 图片3(不要看清除水印的按钮,本人垃圾 没实现)

选择图片
html
<input type="file" id="uploadFile" class="clip" accept="image/*" @change="chooseImg">
js
// 上传图片
chooseImg(event) {
var file = event.target.files[0];
var reader = new FileReader();
reader.readAsDataURL(file);
let _this = this;
reader.onload = function() {
_this.imgsrc = reader.result;
};
_this.imgsrc = file;
}
将文字生成图片
html
<input type="text" placeholder="请输入你要添加的水印文字" class="water-text" v-model="text" @change="conformText()">
js
//生成水印文字 canvas文字你可以设置为你喜欢的样式
conformText() {
var canvas = document.createElement('canvas') //准备空画布
var ctx = canvas.getContext("2d")
ctx.font = "20px Georgia" //canvas字体
ctx.fillText(this.text, 10, 50)
var gradient = ctx.createLinearGradient(0, 0, canvas.width, 0)
gradient.addColorStop("0", "magenta")
gradient.addColorStop("0.5", "blue")
gradient.addColorStop("1.0", "red")
ctx.fillStyle = gradient
this.imgTextUrl = canvas.toDataURL("image/png")
}
合成图片
html
<img id="imgsrc" :src="imgsrc" :width="size">
<img id="imgTextUrl" :src="imgTextUrl" :width="size">
<img id="imgUploadUrl" :src="imgUploadUrl" @click="downLoad()">
<div class="conform" @click="confirmImg()">合成图片</div>
js
// 合成图片
confirmImg(url) {
var canvasAll = document.createElement('canvas')
const size = 180
canvasAll.width = this.size
canvasAll.height = this.size
var context = canvasAll.getContext('2d') // 这是上传图像
var imgUpload = new Image();
var img1 = document.getElementById('imgsrc')
var img2 = document.getElementById('imgTextUrl')
const that = this
imgUpload.onload = function() {
// 绘制
context.drawImage(img1, 0, 0, img1.width, img1.height);
// 再次绘制
context.drawImage(img2, 0, 130, img2.width, img2.height);
// 回调
that.imgUploadUrl = canvasAll.toDataURL('image/png')
}
imgUpload.src = url;
}
点击合成后的图片下载
js
downLoad() {
var a = document.createElement('a');
a.href = this.imgUploadUrl //将画布内的信息导出为png图片数据
a.download = '水印图片'; //设定下载名称 如果不设置a.download 浏览器会尝试打开这张图片 而图片会下载失败
a.click(); //点击触发下载
}
文字水印可以加个drag 进行优化,拖拽调整位置,有时间我加上
以上就是图片合成的核心代码 很粗糙 但是我目前的思路就是这了
关于去除水印,我是这样想的:
第一种:
1: 点击图片(水印部分)获取当前点击点的色值
2: 将该点颜色替换为目标颜色(目标颜色可以自己手动设置、可以在页面加色卡 自定义选取,有点类似于ps)
第二种:
1: 点击图片(水印部分)获取当前点击点的色值
2: 选取图片内要替换颜色的区域
3: 将区域内同色值的点全部替换为目标颜色
我使用第一种方法时,遇到的问题是第2步中,替换颜色的时候,图片上没有办法添加颜色,鼠标点击的时候那个点的颜色会随着鼠标移动到下一个点走
跪求有这方面经验的大佬指点迷津啊
vue + canvas 图片加水印的更多相关文章
- 使用 ImageEnView 给图片加水印,及建缩略图
摘要: 使用 ImageEnView 给图片加水印,及建缩略图 {Power by hzqghost@21cn.com}unit CutWater; interface uses Math,imag ...
- 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化
<?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...
- thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印
今天分享一下thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印.博主是新手,在这里卡住了很久(>_<) thinkphp 3.2.3整合ueditor 1.4 下载 ...
- PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转
[强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...
- php 分享两种给图片加水印的方法
本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...
- Java图片处理(二)图片加水印
图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...
- PHP给图片加水印
<?php /** *图片加水印 *@param $srcImg 原图 *@param $waterImg 水印图片 *@param $savepath 保存路径 *@param $savena ...
- 如何用node.js批量给图片加水印
上一篇我们讲了如何用node.js给图片加水印,但是只是给某一张图片加,并没有涉及到批量处理.这一篇,我们学习如果批量进行图片加水印处理. 一.准备工作: 首先,你要阅读完这篇文章:http://ww ...
- php对图片加水印--将图片先缩小,再在上面加水印
方法: /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $srcImg 原图片 * @param $water ...
随机推荐
- 任意promise串行执行算法 - 童彪
// 任意promise串行执行算法 - 童彪 function runAllPromise() { var p1 = new Promise((resove, reject) => { s ...
- js中各种类型转换为Boolean类型
数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 空字符串 Number 任何非零数字值(包括无穷大) 0和null ...
- 「JOI2019 Final」解题报告
传送门 「JOI2019 Final」勇者比太郎 看懂题就很简单了,后缀和随便维护一下就好了,别用树状数组强加一个\(\log\)就行. 「JOI2019 Final」画展 显然可以先把所有的画框按大 ...
- 十 Restful风格
1 restful风格化,url上的参数通过{}点符绑定,RequestMapping("item/{id}") 2 点位符参数名与方法参数名不一致时,通过@PathVariabl ...
- 一 SSH整合:Spring整合Struts2的两种方式,struts.xml管理Action&Bean管理Action
SSH回顾 1 引入jar包 Struts2的jar包 D:\Struts2\struts-2.3.35\apps\struts2-blank\WEB-INF\lib 开发基本包 Struts2有一 ...
- Victor and String[Bestcoder #52 1004](回文树)
题目描述 Victor喜欢玩字符串.他认为一个字符串是迷人的,当且仅当字符串是回文的.Victor想玩n次.每次他都会做以下四种操作中的一种.操作1:在字符串的开头添加一个字符 c.操作2:在字符串的 ...
- 彻底搞懂 JS 中 this 机制
彻底搞懂 JS 中 this 机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 目录 this 是什么 this 的四种绑定规 ...
- hadoop的扩容
一.横向扩容(参见:https://www.cnblogs.com/yangy1/p/12362565.html) 现在在此基础上再添加一个节点 1.克隆一台主机hdp03(克隆hdp02) 修改ip ...
- JS中的鼠标移入移除监控操作
有些时候我们需要通过页面来监控用户的行为,包括鼠标操作键盘操作,本文章介绍的是鼠标的操作监控: <script> window.onload = function(){ var oDiv ...
- JS操作DOM节点查找
JS中常用的DOM操作事件,包括有节点查找,键盘鼠标事件等等,本文内容介绍DOM的节点查找. <script> window.onload = function(){ //children ...