おい、
初期化時に、署名パッド(キャンバス)を特定の色に設定しましたが、透明または白の背景に保存したいと思います。 リンクされたプロトタイプのremoveBlanks関数を使用して署名だけをキャプチャしましたが、bgはまだrgb(255,243,204)を介して変更しようとしています。
SignaturePad.backgroundColor = rgb(255、255、255); しかし、ストロークに署名すると、base64イメージはすでに登録されているようです。
何か案は?
たぶん、サーバーに送信する前に色を交換するだけでうまくいくでしょうか? CanvasContext2D#getImageData()
を使用して生の画像データを取得し、すべてのピクセルを反復処理して、表示される背景色(8ビット整数)を目的の色に交換できます。 変更した画像データをオフスクリーンキャンバスに保存し、 Canvas#toDataURL()
を使用して読み戻します。 うまくいくかもしれません:)
ところで。 背景色は、キャンバスがクリアされたときに適用されるため、初期化するとき、またはSignaturePad#clear()
明示的に呼び出すときにのみ適用されます。
@szimekご回答ありがとうございます。 私もこれのためにremoveBlanks関数に便乗することを探していました。 それが背景ピクセルなのか署名ピクセルなのかを見分ける方法を理解する必要があります。
署名のjson配列表現を取得する方法もあります
つまり、{lx:20、ly:34、mx:20、my:34}
残念ながら、現時点ではありません。 最後の4つのポイントのみがメモリに保持されるため、すべてのポイントにアクセスする方法はありません。 将来変更される可能性がありますが、優先度の高い他の問題(主に網膜/非網膜スクリーンに関連する)がいくつかあります。
ただし、このデータが本当に必要な場合は、ライブラリを簡単に変更してすべてのポイントを保存できます。
@khawye他にご不明な点がございましたら、この号を再度開いてください。
最も参考になるコメント
たぶん、サーバーに送信する前に色を交換するだけでうまくいくでしょうか?
CanvasContext2D#getImageData()
を使用して生の画像データを取得し、すべてのピクセルを反復処理して、表示される背景色(8ビット整数)を目的の色に交換できます。 変更した画像データをオフスクリーンキャンバスに保存し、Canvas#toDataURL()
を使用して読み戻します。 うまくいくかもしれません:)ところで。 背景色は、キャンバスがクリアされたときに適用されるため、初期化するとき、または
SignaturePad#clear()
明示的に呼び出すときにのみ適用されます。