返回
前端快速制作canvas水印效果,简单粗暴且有效
前端
2024-02-18 04:33:01
在前端开发中,有时我们为了保护页面内容或防止图片被盗用,会给页面或图片添加水印。canvas水印是一种常见的做法,它利用canvas元素来绘制水印。
canvas水印有两种常见的类型:斜纹类和倾斜类。
斜纹类水印是将文字或图案以一定角度倾斜,然后重复填充整个页面。倾斜类水印是将文字或图案倾斜后转化为图片,然后设置背景图片repeat填充整个页面。
本文将介绍如何使用canvas快速制作这两种水印效果,并附有完整示例代码。
斜纹类水印
- 创建一个和页面一样大的画布
- 根据页面大小以及倾斜角度大致铺满水印文字
- 最后转化为一张图片设为背景
倾斜类水印
- 将文字倾斜后转化为图片
- 然后设置背景图片repeat填充整个页面
下面是两种水印效果的示例代码:
斜纹类水印:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<canvas id="canvas" width="100%" height="100%"></canvas>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
// 获取页面大小
var pageWidth = document.documentElement.clientWidth;
var pageHeight = document.documentElement.clientHeight;
// 设置canvas大小
canvas.width = pageWidth;
canvas.height = pageHeight;
// 设置水印文字
var watermarkText = '水印文字';
// 设置水印文字大小
ctx.font = '20px Arial';
// 设置水印文字颜色
ctx.fillStyle = 'rgba(0, 0, 0, 0.5)';
// 设置水印文字倾斜角度
ctx.rotate(-15 * Math.PI / 180);
// 计算水印文字的间距
var textWidth = ctx.measureText(watermarkText).width;
var textHeight = 20;
var spacingX = 100;
var spacingY = 100;
// 绘制水印文字
for (var x = 0; x < pageWidth; x += spacingX) {
for (var y = 0; y < pageHeight; y += spacingY) {
ctx.fillText(watermarkText, x, y);
}
}
// 将canvas转化为图片
var imageData = canvas.toDataURL('image/png');
// 设置图片为背景
document.body.style.backgroundImage = `url(${imageData})`;
</script>
</body>
</html>
倾斜类水印:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<canvas id="canvas" width="100%" height="100%"></canvas>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
// 设置水印文字
var watermarkText = '水印文字';
// 设置水印文字大小
ctx.font = '20px Arial';
// 设置水印文字颜色
ctx.fillStyle = 'rgba(0, 0, 0, 0.5)';
// 将文字倾斜
ctx.translate(canvas.width / 2, canvas.height / 2);
ctx.rotate(-15 * Math.PI / 180);
ctx.translate(-canvas.width / 2, -canvas.height / 2);
// 将文字绘制到canvas上
ctx.fillText(watermarkText, 0, 0);
// 将canvas转化为图片
var imageData = canvas.toDataURL('image/png');
// 设置图片为背景
document.body.style.backgroundImage = `url(${imageData})`;
document.body.style.backgroundRepeat = 'repeat';
</script>
</body>
</html>
以上就是在前端快速制作canvas水印效果的方法,大家可以根据自己的需要选择合适的水印类型。