使用JS和canvas在前端生成带有用户名和密码信息的图片
在node端使用ejs将文字数据发送到前端并生成代用户信息的图片
data-info 表示了文字数据信息,数据格式为[[string,x1,y1],[string,x2,y2]…]
data-info='[["username",68,300],["password",68,410]]'
data-src 表示要使用的融合图片,数据格式为string
data-src='./oneImage.jpg'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas2Image</title>
</head>
<body>
<canvas data-src='./oneImage.jpg' data-info='[["username",68,300],["password",68,410]]'></canvas>
<script type="text/javascript">
(function(){
var selectors = document.querySelectorAll('canvas[data-src]')
for(var i in selectors){
exportCanvas(selectors[i])
}
})()
function exportCanvas(canvas){
try{
var ctx=canvas.getContext("2d");
var img=new Image();
img.src = canvas.getAttribute('data-src');
img.onload=function(){
canvas.width = img.width
canvas.height = img.height
ctx.drawImage(img,0,0);
ctx.font="30px Arial";
var jsonObj = JSON.parse(canvas.getAttribute('data-info'))
ctx.fillText(jsonObj[0][0],jsonObj[0][1],jsonObj[0][2]);
ctx.fillText(jsonObj[1][0],jsonObj[1][1],jsonObj[1][2]);
canvas.outerHTML = "<img class='exImage' src='" + canvas.toDataURL("image/png") + "' />"
return
};
img.onerror = function(){
canvas.outerHTML = ""
return
}
}catch(e){
return undefined
}
}
</script>
</body>
</html>