我给 Seshat 作者发了电子邮件,他建议我将输入转换为 SCG Ink,如果您使用http://cat.prhlt.upv.es/mer/上使用的 JavaScript 库,这将非常容易。具体来说,除了常规的旧 jQuery ,您还需要jquery.sketchable.memento.min.js
、jquery.sketchable.min.js
和。jsketch.min.js
如果其他人对 Seshat 感兴趣,这就是我所做的。
请注意,在同一页面中,main.js
他们使用以下代码块将 Sketchable 库应用于 HTML 画布区域:
var $canvas = $('#drawing-canvas').sketchable({
graphics: {
strokeStyle: "red",
firstPointSize: 2
}
});
现在我们可以看看它们的submitStrokes()
功能,看看如何从 Sketchable 中获取笔画并转换为 SCG Ink。线条var strokes = $canvas.sketchable('strokes');
获取笔划,然后线条strokes = transform(strokes);
应用快速转换以仅提取他们需要的数据。这是transform()
供参考的功能:
function transform(strokes) {
for (var i = 0; i < strokes.length; ++i)
for (var j = 0, stroke = strokes[i]; j < stroke.length; ++j)
strokes[i][j] = [ strokes[i][j][0], strokes[i][j][1] ];
return strokes;
};
from 返回的值transform()
是一个由笔画和点组成的三维数组。(第一个维度的每个元素都是一个笔划,第二个维度的每个元素都是一个点,第三个维度是 x、y 坐标。)在那个站点上,他们继续将该数组发布到必须处理的服务器最终转换为 SCG Ink。我写了一个 JavaScript 函数来处理它:
function strokesToScg(strokes) {
var scg = 'SCG_INK\n' + strokes.length + '\n'
strokes.forEach(function (stroke) {
scg += stroke.length + '\n'
stroke.forEach(function (p) {
scg += p[0] + ' ' + p[1] + '\n'
})
})
return scg
}
就是这样。从返回的值strokesToScg()
是一个字符串,描述了 SCG Ink 格式的一系列笔画。