如何用canvas实现水印
时间: 2023-11-16 11:05:07 浏览: 125
可以先在 canvas 上绘制文本,然后设置透明度,最后将 canvas 转换成图片作为水印。具体实现可以参考以下代码:
```javascript
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
canvas.width = 200;
canvas.height = 100;
ctx.font = '20px Arial';
ctx.fillStyle = 'rgba(0, 0, 0, 0.5)';
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillText('Watermark', canvas.width / 2, canvas.height / 2);
var watermark = new Image();
watermark.src = canvas.toDataURL();
```
这样就可以得到一个带有透明度的水印图片。
相关问题
通过canvas实现水印 代码
下面是一个使用canvas实现文本水印的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Canvas水印</title>
<style>
#watermark {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
</style>
</head>
<body>
<div id="content">
这是需要加水印的内容
</div>
<canvas id="watermark"></canvas>
<script>
var canvas = document.getElementById('watermark');
var ctx = canvas.getContext('2d');
// 设置canvas的宽高与页面大小一致
canvas.width = document.documentElement.clientWidth;
canvas.height = document.documentElement.clientHeight;
// 绘制水印文本
ctx.font = '24px Arial';
ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
ctx.textAlign = 'center';
ctx.fillText('Watermark', canvas.width / 2, canvas.height / 2);
// 将canvas转换为base64格式的图片数据
var base64Url = canvas.toDataURL();
// 将图片添加到页面中作为背景
document.getElementById('content').style.backgroundImage = 'url(' + base64Url + ')';
// 校验图片是否被篡改
var img = new Image();
img.src = base64Url;
img.onload = function() {
var md5 = calcMD5(base64Url);
// 发送MD5值到后台进行比对
console.log(md5);
};
// MD5计算函数
function calcMD5(str) {
// TODO:使用JS计算MD5值
}
</script>
</body>
</html>
```
这个示例代码会在页面中添加一个水印,防止用户对内容进行复制或截图。同时,它会计算图片数据的MD5值,并输出到控制台,供后台进行比对。
uniapp 使用canvas绘制水印
在uniapp中使用canvas绘制水印,可以通过以下步骤实现:
1. 首先,在uniapp项目中创建一个新的页面或组件,用于显示canvas画布。
2. 在该页面或组件中,使用`<canvas>`标签创建一个画布元素,并设置其宽度和高度。
3. 使用`uni.createCanvasContext()`方法创建一个绘图上下文对象,用于操作画布。
4. 使用绘图上下文对象的相关方法,如`fillText()`、`fillRect()`等来绘制水印内容。
5. 通过调用绘图上下文对象的`draw()`方法将绘制的内容显示在画布上。
下面是一个简单的示例代码,演示了如何在uniapp中使用canvas绘制水印:
```
<template>
<view>
<canvas id="canvas" style="width: 300px; height: 200px;"></canvas>
</view>
</template>
<script>
export default {
onReady() {
const ctx = uni.createCanvasContext('canvas', this);
ctx.setFillStyle('rgba(0, 0, 0, 0.5)'); // 设置水印颜色和透明度
ctx.setFontSize(16); // 设置水印字体大小
ctx.fillText('水印内容', 10, 20); // 绘制水印文本
ctx.draw(); // 绘制到画布上
}
}
</script>
```
在上述代码中,我们使用了uniapp提供的`uni.createCanvasContext()`方法创建了一个绘图上下文对象,并通过该对象的`setFillStyle()`、`setFontSize()`以及`fillText()`方法来设置水印的样式和内容。最后,通过调用`draw()`方法将绘制的水印显示在画布上。
需要注意的是,在uniapp中使用canvas绘制水印时,需要确保在`onReady()`生命周期函数中进行绘制操作,以确保画布已经完全加载。另外,还需要注意设置画布的宽度和高度,以及调整水印的位置和样式,以满足具体需求。
希望以上内容对您有所帮助!
阅读全文