html5中如何使用canvas完成图片平铺水印
本篇内容介绍了“html5中如何使用canvas完成图片平铺水印”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
因为这个功能需要的都是一些canvas基础的api,也不涉及什么原理性的问题,这里我就直接贴js代码
varimg=newImage();//因为我项目中的业务是,要把淘宝的图片添加水印,所以这里就放一个淘宝商品的主图img.src='https://gd4.alicdn.com/imgextra/i3/155/O1CN01XKkJqL1D11wYZbeI2_!!155-0-lubanu.jpg_400x400.jpg';img.onload=()=>{//准备canvas环境varcanvas=document.getElementById("myCanvas");varctx=canvas.getContext("2d");//先把图片绘制到canvas上ctx.drawImage(img,0,0,200,200);//绘制水印到canvas上for(leti=0;i<20;i++){ctx.rotate((-45*Math.PI)/180);//水印初始偏转角度ctx.font="20pxmicrosoftyahei";ctx.fillStyle="rgba(0,0,0,0.5)";ctx.fillText("mmmmmmmmmmmmmmmmmmmmmmm",-300,i*25);ctx.rotate((45*Math.PI)/180);//把水印偏转角度调整为原来的,不然他会一直转}
html:
<canvasheight="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的代码就变成了:
varimg=newImage();//因为我项目中的业务是,要把淘宝的图片添加水印,所以这里就放一个淘宝商品的主图img.setAttribute("crossorigin","crossorigin");//这句代码是为了解决跨域问题,如果你的图片是自己的,没有跨域问题可以去掉img.src='https://gd4.alicdn.com/imgextra/i3/155/O1CN01XKkJqL1D11wYZbeI2_!!155-0-lubanu.jpg_400x400.jpg';
“html5中如何使用canvas完成图片平铺水印”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。