作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作如图所示的应用程序。用户在表单中键入内容,右侧图像将填充键入的内容。完成后,单击“确定”,然后生成包含表单结果的图像。
我尝试用 Canvas 做,只是文本的线条有不同的样式、字体和大小。我发现 Canvas 非常有限,无法进行这种定制。
还有其他方法可以做到这一点吗?
这是我正在做的代码,但它并不完全正确。我正在尝试在 vue.js 中执行此操作
var app = new Vue({
el: '#app',
data: {
titles: [
{ text: 'Title' },
{ text: 'Desc' },
{ text: 'Benef' }
],
contents: [
{ text: 'I am title' },
{ text: 'I am desc' },
{ text: 'Create content here' }
]
},
directives: {
insertMessage: function(canvasElement, binding) {
var ctx = canvasElement.getContext("2d");
ctx.clearRect(0, 0, 300, 150);
ctx.fillStyle = "black";
ctx.font = "20px Georgia";
ctx.fillText(binding.value, 10, 50);
}
}
})
form { float: left; margin: 20px 10px; width: 30%; }
input { display: block; margin-bottom: 10px }
<body>
<div id="app">
<canvas width="500" height="500" style="border:1px solid #BBB;" v-insert-message="contents[0].text + contents[1].text + contents[2].text"></canvas>
<form class="form-data">
<fieldset>
<label for="" v-for="title in titles">{{title.text}}</label>
<input type="text" v-for="content in contents" v-model="content.text">
</fieldset>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
<script src="main.js"></script>
</body>
</html>
最佳答案
如果您不想在 Canvas 中执行此操作,那么将文本行提交到服务器并在服务器端一致地生成图像(例如使用 python 中的 PIL 或其他东西)可能会更好。使用 Canvas 受浏览器支持、字体支持、浏览器一致性等因素的影响。
关于javascript - 如何将表单的结果转换为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49163538/
我是一名优秀的程序员,十分优秀!