こんにちは.fromDataURL()を使用して、この素晴らしいライブラリを使用して同じサイズのキャンバスで作成された署名をロードすると、画像のサイズが正しくなく、サイズの1/4になります。
これがライブラリかどうかはわかりませんが、最初に署名する前、および署名をメモリにロードする前に、キャンバスのサイズを変更します。
これは私の論理の問題ですか、それとも誰かが以前にこれを見たことがありますか?
ところで、それはwindow.devicePixelRatioが何らかの理由で同じではないことに関係しています。
まだ調査中ですが、私のコードに問題があるのではないかと思います:(
最新バージョン(1.3.4)を使用していますか? window.devicePixelRatio
が1と異なる場合、1.3.3はfromDataURL
を修正するはずでしたが、(うまくいけば)実際には1.3.4で修正されました。
最新バージョンを使用しています。
比率を適切に修正すると(デモのように)、線が表示されている場所に指が一致しません。
簡単なデモを作成しているだけなので、それほど重要ではなく、後で試してみます。
簡単なデモは次のとおりです:http: //jsfiddle.net/szimek/baL7r8xd。 「置換」ボタンを押すと、キャンバスがクリアされ、1秒後に画像が元に戻ります。 window.devicePixelRatio
が2のiPhoneでは問題なく動作します。
奇妙なことに、私のアンドロイドでも動作します。
ありがとう、私はそれを理解します:)
この問題に遭遇した人のために、私は自分が間違っていることを理解しました。
.fromDataURL(data)
を使用してデータを入力する前に、キャンバスを適切にスケーリングすることを確認する必要があります。
function resizeCanvas(canvas) {
var ratio = window.devicePixelRatio || 1;
canvas.width = canvas.offsetWidth * ratio;
canvas.height = canvas.offsetHeight * ratio;
canvas.getContext('2d').scale(ratio, ratio);
}
resizeCanvas(canvas);
同じ画像サイズを作成するには、オプションを追加できますsignaturePad.fromDataURL(data, {width: 100, height: 100})
幅、高さはキャンバスサイズと同じである必要があります
詳細:
https://github.com/szimek/signature_pad/blob/master/src/signature_pad.ts
最も参考になるコメント
同じ画像サイズを作成するには、オプションを追加できます
signaturePad.fromDataURL(data, {width: 100, height: 100})
幅、高さはキャンバスサイズと同じである必要があります
詳細:
https://github.com/szimek/signature_pad/blob/master/src/signature_pad.ts