html5 canvas实现给图片添加平铺水印


Posted in HTML / CSS onAugust 20, 2019

最近项目中遇到一个需求,需要把一张图片加上平铺的水印

类似这样的效果

html5 canvas实现给图片添加平铺水印 

首先想到的是用canvas完成这种功能,因为我之前也没有接触过canvas,所以做这个功能的时候,就是一步一步的摸索中学习,过程还是挺nice的,接下来跟我一步步来实现这个功能以及发现一些canvas的坑吧。

因为这个功能需要的都是一些canvas基础的api,也不涉及什么原理性的问题,这里我就直接贴js代码

var img = new Image();
// 因为我项目中的业务是,要把淘宝的图片添加水印,所以这里就放一个淘宝商品的主图
img.src = 'https://gd4.alicdn.com/imgextra/i3/155/O1CN01XKkJqL1D11wYZbeI2_!!155-0-lubanu.jpg_400x400.jpg';
img.onload = () => {
  // 准备canvas环境
  var canvas = document.getElementById("myCanvas");
  var ctx = canvas.getContext("2d");
  // 先把图片绘制到canvas上
  ctx.drawImage(img, 0, 0, 200, 200);
  // 绘制水印到canvas上
  for (let i = 0; i < 20; i++) {
 
  ctx.rotate((-45 * Math.PI) / 180); // 水印初始偏转角度
  ctx.font = "20px microsoft yahei";
  ctx.fillStyle = "rgba(0,0,0,0.5)";
  ctx.fillText("mmmmmmmmmmmmmmmmmmmmmmm",-300,i * 25);
  ctx.rotate((45 * Math.PI) / 180); // 把水印偏转角度调整为原来的,不然他会一直转
}

 

html
 

<canvas
  height="200"
  id="myCanvas"
  width="200"
>

你的浏览器不支持水印,请用谷歌浏览器打开</canvas>

这时候来试一下,结果发现有报错

Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

在谷歌之后,发现这是图片跨域问题导致的,那么如何解决呢?

只需给咱们new出来的img添加一个属性就好了

img.setAttribute("crossorigin", "crossorigin");

于是,js部分new img的代码就变成了

var img = new Image();
// 因为我项目中的业务是,要把淘宝的图片添加水印,所以这里就放一个淘宝商品的主图
img.setAttribute("crossorigin", "crossorigin");// 这句代码是为了解决跨域问题,如果你的图片是自己的,没有跨域问题可以去掉
img.src = 'https://gd4.alicdn.com/imgextra/i3/155/O1CN01XKkJqL1D11wYZbeI2_!!155-0-lubanu.jpg_400x400.jpg';

接下来来看一下我们的成品

html5 canvas实现给图片添加平铺水印 

总结

以上所述是小编给大家介绍的html5 canvas实现给图片添加平铺水印,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

HTML / CSS 相关文章推荐
CSS3——齿轮转动关键代码
May 02 HTML / CSS
css3新增颜色表示方式分享
Apr 15 HTML / CSS
基于CSS3实现图片模糊过滤效果
Nov 19 HTML / CSS
使用CSS3美化HTML表单的技巧演示
May 17 HTML / CSS
CSS3选择器新增问题的实现
Jan 21 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
Apr 07 HTML / CSS
关于HTML5的22个初级技巧(图文教程)
Jun 21 HTML / CSS
html5 worker 实例(二) 图片变换效果
Jun 24 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
Jun 28 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
Nov 15 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
Oct 28 HTML / CSS
使用HBuilder制作一个简单的HTML5网页
Jul 07 HTML / CSS
导出HTML5 Canvas图片并上传服务器功能
Aug 16 #HTML / CSS
HTML5自定义属性的问题分析
Aug 16 #HTML / CSS
HTML5实现视频弹幕功能
Aug 09 #HTML / CSS
Canvas高级路径操作之拖拽对象的实现
Aug 05 #HTML / CSS
Canvas多边形绘制的实现方法
Aug 05 #HTML / CSS
使用canvas压缩图片大小的方法示例
Aug 02 #HTML / CSS
HTML5实现移动端弹幕动画效果
Aug 01 #HTML / CSS
You might like
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
utf8的编码算法 转载
2006/12/27 Javascript
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
JavaScript中字符串分割函数split用法实例
2015/04/07 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
Python微信公众号开发平台
2018/01/25 Python
django文档学习之applications使用详解
2018/01/29 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
护士实习自我鉴定
2013/10/22 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
计算机网络专业求职信
2014/06/05 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python