博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js初级应用之canvas制作图片水印
阅读量:7231 次
发布时间:2019-06-29

本文共 1177 字,大约阅读时间需要 3 分钟。

在canvas出现之前,项目中的图片添加水印的需求,必定是后端同学们来处理的,但是canvas出来之后,前端终于可以站出来说,这个需求,交给我来!壮哉我大前端~,上周的任务就是在前端处理水印的效果,这个效果最重要的逻辑其实就几行代码,至于如何优雅的将这些简单的逻辑封装成方法并入公司的前端库,应该是一个仁者见仁智者见智的问题,在此不表。

好了,废话不表,开始干活。

在html中准备canvas环境

Your browser does not support the HTML5 canvas tag.

加载图片,这张图片有可能是已经存在的,也有可能是从后端通过ajax取过来的,不管是哪种方式,我们都需要一个img对象来保存这张图,在例子中,我们从后台取过来一张url为./img/demo.jpg的图片

var img = new Image();   img.src = './img/demo.jpg';

在图片加载完成之后,调用canvas的drawImage(),将我们的图片绘制在canvas的图层上面

img.onload=function(){       var canvas=document.getElementById("myCanvas");       var ctx=canvas.getContext("2d");       ctx.drawImage(img,0,0);}

注意,调用drawImage()函数之前,请确保你的图片已经加载ok,否则你会看到canvas是空白的,这是因为在图片还没有绝对加载到页面之前,你直接调用了drawImage(),而这个时候,img对象还是空的。

在canvas上绘制好图片之后,回到onload函数中,利用我们在上一步中获取的ctx对象,继续绘制水印,font属性可以自定义水印的大小以及字体,fillStyle()方法可以自定义水印的颜色以及透明度,fillStyle()则完成最后的填充以及水印的位置定位

ctx.font="20px microsoft yahei";   ctx.fillStyle = "rgba(255,255,255,0.5)";   ctx.fillText("my images",100,100);

ok,如果你进行到这一步,初步的水印效果应该以及达成了,如果你还需要更多的效果,那就赶快去看canvas的api吧,上图,看看我的水印

图片描述

最后,贴一个源代码,想看到效果的同学,直接拷贝我的html代码,将里面的图片url替换成你本地的url,就可以了

    
Document
Your browser does not support the HTML5 canvas tag.

转载地址:http://nccfm.baihongyu.com/

你可能感兴趣的文章
如何设计用户登录
查看>>
linux安装mysql5.7.19
查看>>
Zookeeper+ActiveMQ 集群实现
查看>>
加权有向图问题2----多源最短路径问题(Floyd算法)和关键路径算法
查看>>
logback logback.xml常用配置详解(三) <filter>
查看>>
KgMall B2B/B2B2c/C2C版店铺商号初始化
查看>>
Linux内核的ioctl函数学习
查看>>
Liunx Shell入门
查看>>
Thread的中断
查看>>
linux --- 内存管理
查看>>
PostgreSQL
查看>>
CPU 超线程、多核
查看>>
用ASCII码显示string.xml中的特殊字符
查看>>
网站301跳转到新域名
查看>>
codewars020: The Clockwise Spiral 数字顺时针螺旋矩阵
查看>>
ios 下拉刷新
查看>>
Django在Windows系统下的安装配置
查看>>
懒到极致:对mybatis的进一步精简
查看>>
Android学习之OTA Update
查看>>
Maven Multi-environment package
查看>>