1

我的网页上有一个画布,允许用户签署他们的签名(使用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' />");
        });

jsFiddle

任何帮助将不胜感激!谢谢!

4

2 回答 2

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 ONLY)(BITMAP)数据格式与早期版本中生成的输出格式 jSignature 兼容,当 getData 被调用时不带参数。现在,每当您使用 $obj.jSignature("getData") 时,都会默认调用“默认”(显然)。数据格式是由 Canvas 本地生成的 - data-url-formatted,base64 编码(可能是 PNG)位图数据,如下所示: data:image/png;base64,i1234lkj123;k4;l1j34l1kj3j... 此导出调用返回单个 data-url 格式的字符串。

于 2012-12-07T16:27:38.510 回答
1

我个人会使用 js将图像发布到 PHP 页面。然后,此页面会将图像保存到目录并在数据库中插入对该文件的引用。

切勿将图像直接存储在数据库中。这不仅会占用大量空间,还会导致大幅减速。

希望这可以帮助。

于 2012-12-07T16:13:27.577 回答