我認爲這是一個常見問題,但我似乎無法找到一個簡單的解決方案。我有一個畫布(我實際使用sketch.js,但我不認爲事項)與背景圖像,例如突擊隊員:保存畫布背景以及畫布內容
當正從畫布圖像我只得到它的畫布圖像:
瓦在我真的想要它們(就像它看起來在屏幕上,第二次捕捉上面)。
我已經嘗試合併背景圖片回來沒有成功。最終這個結果被推到S3 - 所以我不想找到一種方法將它推入另一個HTML元素,我更喜歡一起抓取畫布和背景。但如果不可能的話,我會想象會發生某種合併。
HTML:
<div id="annotationmodal" class="modal">
<div class="annotation-container" id="annotation_{{id}}">
<div class="tools" style="margin-bottom:10px;">
</div>
<div class="center">
<canvas id="tools_sketch_inlinephoto" width="{{width}}" height="{{height}}" style="background: url(@Url.Content("~")my/stuff/amazon/{{value}}/redirect) no-repeat center center;"></canvas>
</div>
<div class="center">
<input type="button" class="btn btn-solid-grey btn-sm" onclick="device.annotationCancel();" value="Cancel" style="margin-right: 15px;" />
<input type="button" class="btn btn-solid-green btn-sm" onclick="device.annotationSave(this, '{{id}}');" value="Save" />
</div>
</div>
的Javascript:
annotationSave: function (element, id) {
var fileExtension = "jpg";
var canvas = document.getElementById("tools_sketch_inlinephoto");
var data = canvas.toDataURL();
var key = device.uploadDataUri(fileExtension, "image/" + fileExtension, data);
$("#annotationmodal").detach();
if (settings.focusedField) {
settings.focusedField.focus();
}
}
是否有一個簡單的方法來做到這一點?請注意,背景圖像正在從S3中拉出來...
我在使用Literally Canvas之前做了類似的事情。你可能遇到了我遇到的同樣的問題。可能有兩個畫布。一個有圖像,一個有你的繪圖。如果您將它們繪製在彼此之上,它將合併它們。例如:'var snapshot = document.getElementById('snapshot'); var context = snapshot.getContext('2d'); //展平畫布背景和效果 context.drawImage(document.getElementsByTagName('canvas')[0],0,0,640,480); context.drawImage(document.getElementsByTagName('canvas')[1],0,0,640,480);' – Wes
@Wes 4謝謝。所以在這個例子中,背景是[0],用戶正在寫入的畫布部分是[1]?如果以這種方式完成,canvas.toDataURL()會將它們合併嗎? –
這段文字對評論有點混亂,所以我把它寫在下面的答案中。這是正確的。我使用'canvas.toDataURL(「image/png」);' – Wes