要件:テキストオーバーレイなしでキャンバスの画像がダウンロードされるのはなぜですか?
- ユーザーは、画像の上にオーバーレイとして行くテキストを入力することができます。
- ユーザーはオーバーレイで画像をダウンロードできます。
これを行うには、イメージをキャンバスに描画し、テキストを入力してから、リンクのhref
をキャンバスのdataURLに設定します。
調査結果:
- 私はちょうど罰金キャンバスに画像上のテキストオーバーレイを見ることができます。
- キャンバスを右クリックしてイメージをダウンロードすると、テキストオーバーレイが正常に表示されます。
- リンクをクリックすると、元画像が表示され、のテキストオーバーレイは表示されません。
私は何を欠席しましたか?
var imgURL = 'https://upload.wikimedia.org/wikipedia/commons/5/56/Neptune_Full.jpg';
function loadCanvas(dataURL) {
var canGreeting = document.getElementById('canGreeting');
var context = canGreeting.getContext('2d');
// load image from data url
var imageObj = new Image();
imageObj.crossOrigin = 'anonymous';
imageObj.onload = function() {
context.drawImage(imageObj, 0, 0);
context.font = "20px sans-serif";
context.fillStyle = "#FFFFFF";
var arrayOfLines = $('#txtGreetingText').val().split('\n');
var y = 50;
var i = 0;
$(arrayOfLines).each(function() {
context.fillText(arrayOfLines[i], 50, y);
i++;
y += 30;
});
};
imageObj.src = dataURL;
lnkDownload.download = "card.jpg";
lnkDownload.href = imageObj.src;
}
$(document).ready(function() {
loadCanvas(imgURL);
$("#txtGreetingText").on("keydown", function(e) {
loadCanvas(imgURL);
});
});
textarea {
width: 420px;
height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<textarea name="txtGreetingText" id="txtGreetingText"></textarea>
<br/>
<canvas id="canGreeting" width="480" height="480"></canvas>
<br/>
<a id="lnkDownload">Download this card</a>
@Downvoter、私は質問を改善して嬉しいです。改善すべき点についてコメントしていただけますか? – Zesty