添加背景图片&可拖动图像到HTML5画布
Add background image & draggable images to HTML5 canvas
这是我的画布图像文本编辑器,我想添加一个背景图像和一个可以拖放的图像。我发现代码片段做这样的事情,但我的代码有点不工作。
代码
<style>canvas{width:450px; height:350px;}</style>
<canvas width="792" height="612"></canvas>
<a id="canvas-download" download="canvas-image.png" href="">Download</a>
<input type="file" id="bgload" name="bgload" />
<input type="file" id="logoload" name="logoload" />
<input id="title" value="[Certificate Title]"/>
<input id="present" value="[Presented to]" />
<input id="receiver" value="[Type Name Here]" />
<input id="awardDate" value="[Awarding Date]" />
<input id="signature" value="[Signature]" />
<script>
$(function () {
var cvs = $("canvas"),
cvsWidth = 792,
cvsHeight = 612,
ctx = cvs[0].getContext("2d"),
title = $("#title"),
present = $("#present"),
receiver = $("#receiver"),
awardDate = $("#awardDate"),
signature = $("#signature");
function writeCaption(text, y, size, x) {
var size = size;
do {
size--;
ctx.font = size + 'px Georgia';
ctx.lineWidth = size / 32;
} while (ctx.measureText(text).width > cvsWidth)
if (x == 0)
ctx.fillText(text, cvsWidth / 2, y);
else
ctx.fillText(text, x, y);
//ctx.strokeText(text, cvsWidth / 2, y);
}
// Setup basic canvas settings
$.extend(ctx, {
//strokeStyle: "#000000",
textAlign: 'center',
fillStyle: "#000",
lineCap: "round"
})
$("<img />")
.load(function () {
var img = this;
$(document.body).on("keyup", function () {
var titleText = title.val(),
presentText = present.val(),
signatureText = signature.val(),
awardDateText = awardDate.val(),
receiverText = receiver.val();
ctx.clearRect(0, 0, cvsWidth, cvsHeight);
ctx.drawImage(img, 0, 0, cvsWidth, cvsHeight);
//text alignments
ctx.textBaseline = 'top';
writeCaption(titleText, 150, 40, 0);
ctx.textBaseline = 'top';
writeCaption(presentText, 240, 20, 0);
ctx.textBaseline = 'top';
writeCaption(receiverText, 270, 30, 0);
ctx.textBaseline = 'bottom';
writeCaption(awardDateText, 490, 20, 300);
ctx.textBaseline = 'bottom';
writeCaption(signatureText, 490, 20, cvsWidth - 300 + ctx.measureText(signatureText).width);
}).trigger("keyup");
})
.attr("src", "<?php echo _SITE_URL; ?>images/editor/Template1.jpg")
.attr("id", "canvasimg");
var download = document.getElementById('canvas-download');
download.addEventListener('click', function () {
var canvas = document.getElementById('cs_canvas');
var data = canvas.toDataURL();
download.href = data;
}, false);
});
</script>
下面是工作示例的jsfiddle链接。http://jsfiddle.net/57gfqsm3/7/
请帮
我花了很长时间尝试在画布标签this上拖放图像,最终使用了kinetic.js。
https://github.com/ericdrowell/KineticJS/如果有人有更好的解决方案,我会看这篇文章。
我找到了一个叫做Fabric的复杂javascript画布库。点击这里
相关文章:
- JavaScript HTML5画布未显示
- html5画布动画无法正常工作
- 在HTML5画布上添加按钮和控件
- 如何在运行时在HTML5画布中绘制正方形
- Unicode字符未在HTML5画布中正确呈现
- 鼠标点击HTML5画布绘制矩形
- html5画布在同一行中写入多个字体
- HTML5画布-暂停时的运行时间
- 使用JavaScript和HTML5画布进行冲突检测
- 什么是HTML5画布标记的回退
- 如何在html5画布中绘制圆形作为单独的画布
- 如何在flash html5画布项目中动态更改文本颜色
- HTML5画布支持和Android Webview
- html5画布中的套索工具
- 什么'是在HTML5画布中创建关键事件的最佳方式
- Javascript:延迟在html5画布上循环绘制
- 如何在HTML5画布上呈现音频波形
- HTML5画布动画滑块
- 如何将 html5 画布另存为窗口 8 Metro 应用程序中的图像文件
- HTML5-画布元素&自定义光标