1

Webページに、ユーザーが署名に署名できるキャンバスがあります(jSignatureを使用)。canvasgを使用してpngクライアント側に変換し、 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 の vg プラグインを使用して、その結果を AJAX 経由でサーバーに投稿することを検討してください。次に、この質問からの回答を使用できます: Rendering an SVG file to a PNG or JPEG in PHP

データベースに挿入する base64 でエンコードされた文字列として画像をアップロードする必要があり、他のオプションが利用できない場合、jSignature には画像を base64 に変換する画像エクスポート プラグインがあります。

デフォルト (エクスポートのみ) (ビットマップ) データ形式は、getData が引数なしで呼び出されたときに以前のバージョンで生成された出力形式 jSignature と互換性があります。$obj.jSignature("getData") データ形式は、Canvas によってネイティブに生成されるものです - data-url 形式の 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 に答える