HTML5キャンバスにテキストを描画し、キャンバスを2番目のキャンバスにオーバーレイされる画像に変換します.imgはユーザーによって回転され、2番目のキャンバスに描画されます. 私が抱えている問題は、画像がキャンバスに描画されたときに正しい位置にないことです。これを示すためにいくつかの画像を添付しました:
これは、ユーザーがドラッグして回転できる img タグです。
(出典: devjoe.co.uk )
これは、画像がキャンバスに描かれたときに起こることです (赤いボックスは無視してください)
(ソース: devjoe.co.uk )
画像がずれている理由がわかりません。水平の場合は正しい場所に描画されますが、回転させるほど離れてしまいます。キャンバスに画像を描画する JavaScript は次のとおりです。
function saveWatermark()
{
toggleLoading(true);
enableUndo();
var watermarkOffset = $('.watermark').offset();
var watermarkWidth = $('.watermark').width();
var watermarkHeight = $('.watermark').height();
var canvasOffset = $(_canvas).offset();
//TODO: If the text is a long string then the rotate handle is too close and it moves jerkily
var img = new Image();
img.onload = function ()
{
$('.watermark-container').remove();
if (!_watermarkAngle)
{
_context.drawImage(img, _watermarkX, _watermarkY);
} else
{
_watermarkAngle = Math.round(_watermarkAngle);
_context.save();
var xPos = watermarkOffset.left - canvasOffset.left;
var yPos = watermarkOffset.top - canvasOffset.top;
var xCentre = xPos + img.width / 2;
var yCentre = yPos + img.height / 2;
_context.translate(xCentre, yCentre);
_context.rotate(_watermarkAngle * Math.PI / 180);
_context.translate(-xCentre, -yCentre);
_context.drawImage(img, xPos + (img.width / 2), yPos + (img.height / 2));
_context.fillStyle = 'rgba(255,0,0,0.5)';
_context.fillRect(xPos, yPos, img.width, img.height);
_context.restore();
}
$btnWatermarkSave.attr('disabled', 'disabled');
toggleLoading(false);
};
img.src = $('.watermark')[0].src;
}
どんな助けでも素晴らしいでしょう。
ありがとう、
ジョー