好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

类似这样的效果

&nbs p;

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

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

 VAR   img  = new Image();
// 因为我项目中的业务是,要把 淘宝 的 图片添加水印 ,所以这里就放一个淘宝商品的主图
img.src = 'https://gd4.alicdn .COM /imgextra/i3/155/O1CN01XKk jq L1D11wYZb ei 2_!!155-0-l ub anu. jpg _400x400.jpg';
img.onload = () => {
  // 准备canvas环境
  var canvas = document.getElementById(" ;m yCanvas");
  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); // 把水印偏转角度 调整 为 原来 的,不然他会一直转
}

 

ht ML
 

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

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

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

F ai led to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be export ed.

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

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

img. setattribute ("crossori gin ", "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实现给图片添加平铺水印 全部内容,希望文章能够帮你解决 html5 canvas实现给图片添加平铺水印 所遇到的问题。

如果觉得 网站内容还不错, 推荐好友。

查看更多关于html5 canvas实现给图片添加平铺水印的详细内容...

  阅读:27次