我的网页上有一个画布,允许用户签名(使用jSignature)。我使用canvasg将其转换为png客户端,现在需要将其提交给Quickbase。我知道如何将图片上传到quickbase,但我的问题是从index.html
页面的客户端代码到submit_signature.php
中的服务器端代码获取文件。
$("#save").click(function(){
var datapair = sigdiv.jSignature("getData", "svg");
var i = new Image();
i.src = "data:" + datapair[0] + "," + datapair[1];
$(i).appendTo($("#outputSvg"));
var canvas = document.getElementById("canvas");
canvg(canvas, datapair[1]);
var img = canvas.toDataURL("image/png");
$("#outputRaster").append("<img src='"+img+"' name='image' />");
});
任何帮助将不胜感激!谢谢!
答案 0 :(得分:3)
jSignature的作者建议您不要将其另存为图像(http://willowsystems.github.com/jSignature/#/about/)。
我知道你很想从jSignature那里得到“图像”,但是,请控制自己,远离它。相反,考虑捕获“base30”或“svg”数据,并在后期制作,服务器端增强+渲染。
他在下面陈述了一些理由。如果这些原因对你有意义并且你可以使用ImageMagick,你可以考虑使用jSignature'svg插件并通过AJAX将结果发布到你的服务器。然后你可以使用这个问题的答案:Rendering an SVG file to a PNG or JPEG in PHP
如果您必须将图像上传为base64编码的字符串以插入数据库,并且其他选项不可用,则jSignature有一个图像导出插件,可以将其转换为base64。
默认(仅限EXPORT)(BITMAP)数据格式与在不使用参数调用getData时在早期版本中生成的输出格式jSignature兼容。 $ default.jSignature(“getData”)默认情况下默认情况下会调用“默认”(显然)。数据格式是由Canvas本地生成的 - data-url-formatted,base64编码(可能是PNG)位图数据,如下所示:data:image / png; base64,i1234lkj123; k4; l1j34l1kj3j ...此导出调用返回单个data-url格式的字符串。
答案 1 :(得分:1)
我个人会使用js来post将图像添加到PHP页面。 然后,该页面将图像保存到目录中,并在数据库中插入对该文件的引用。
永远不要将图像直接存储在数据库中。这不仅占用了大量空间,而且还会造成大幅减速。
希望这有帮助。