canvas操作图片或文字叠加并导出base64
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="format-detection" content="telephone=no" />
<!-- new end -->
<style>
</style>
</head>
<body>
<div class="mui-content">
<button onclick="mmm('wrap-img','inner-img')" type="button" class="mui-btn mui-btn-blue mui-btn-block">按钮</button>
<img id="inner-img" src="/img/2.jpg" />
<!--
这里要注意 同源策略
可以用自己服务器上的图片
如果遇到问题 请去Stack Overflow解决相关问题
-->
<img id="wrap-img" src="/img/1.jpg" />
<canvas id="myCanvas" width="270" height="135" style="border:1px solid #d3d3d3;">
</canvas>
<img src="" alt="" id='new-img'>
</div>
<script src='https://benjazhu-1.oss-cn-shenzhen.aliyuncs.com/assets/js/jquery2.1.5.min.js'></script>
<script> </script>
<script>
function mmm(wrap_img_id, inner_img_id) {
console.log("mmm");
//两张图
var img = document.getElementById(wrap_img_id);
var canvas = document.getElementById("myCanvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
var img2 = document.getElementById(inner_img_id);
var scale = 5
ctx.drawImage(img2, 0, 0, img2.width, img2.height, img.width - img2.width / scale, 0, img2.width / scale, img2.height / scale);
ctx.font = "20px Georgia";
ctx.fillText("Hello World!", 10, 50);
ctx.font = "30px Verdana";
srccc = canvas.toDataURL("image/jpeg", 0.8);
console.log(srccc);
$('#new-img').attr('src', srccc);
}
</script>
</body>
</html>
测试地址 :
本文首发于 我的博客