【发布时间】:2017-06-18 21:43:38
【问题描述】:
要求:
- 用户可以在图像顶部输入作为叠加层的文本。
- 用户可以下载带有叠加层的图像。
为此,我将图像绘制到画布上,填充文本,然后将链接的 href 设置为画布的 dataURL。
调查结果:
- 我可以很好地看到画布中图像上的文本叠加。
- 如果我在画布上单击鼠标右键并下载图像,我可以看到文本覆盖就好了。
- 如果我点击链接,我会看到没有文本覆盖的原始图像。
我错过了什么?
这是sn-p:
var imgURL = 'https://upload.wikimedia.org/wikipedia/commons/5/56/Neptune_Full.jpg';
function loadCanvas(dataURL) {
var canGreeting = document.getElementById('canGreeting');
var context = canGreeting.getContext('2d');
// load image from data url
var imageObj = new Image();
imageObj.crossOrigin = 'anonymous';
imageObj.onload = function() {
context.drawImage(imageObj, 0, 0);
context.font = "20px sans-serif";
context.fillStyle = "#FFFFFF";
var arrayOfLines = $('#txtGreetingText').val().split('\n');
var y = 50;
var i = 0;
$(arrayOfLines).each(function() {
context.fillText(arrayOfLines[i], 50, y);
i++;
y += 30;
});
};
imageObj.src = dataURL;
lnkDownload.download = "card.jpg";
lnkDownload.href = imageObj.src;
}
$(document).ready(function() {
loadCanvas(imgURL);
$("#txtGreetingText").on("keydown", function(e) {
loadCanvas(imgURL);
});
});
textarea {
width: 420px;
height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<textarea name="txtGreetingText" id="txtGreetingText"></textarea>
<br/>
<canvas id="canGreeting" width="480" height="480"></canvas>
<br/>
<a id="lnkDownload">Download this card</a>
【问题讨论】:
-
@Downvoter,我很高兴改进这个问题。您能评论一下应该改进的地方吗?
标签: javascript html canvas