有時候,我們繪制好的canvas想存儲為本地圖片,該怎么做呢?canvas提供了一個重要的方法toDataURL(),這個方法能把畫布里的圖案轉(zhuǎn)變成base64編碼格式的png或者其他格式的圖片(根據(jù)你傳入的mine類型的參數(shù)),然后返回 Data URL數(shù)據(jù)。接下來我們看具體是怎么實現(xiàn)的。
html頁面一個canvas畫布:
<canvas id="canvas"></canvas> <button class="button-balanced" id="save">save</button> <br /> <a href="" download="canvas_love.png" id="save_href"> <img src="" id="save_img"/> </a>
對應(yīng)的js代碼實現(xiàn):
var c=document.getElementById("canvas"); function drawLove(canvas){ let ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.fillStyle="#E992B9"; ctx.moveTo(75,40); ctx.bezierCurveTo(75,37,70,25,50,25); ctx.bezierCurveTo(20,25,20,62.5,20,62.5); ctx.bezierCurveTo(20,80,40,102,75,120); ctx.bezierCurveTo(110,102,130,80,130,62.5); ctx.bezierCurveTo(130,62.5,130,25,100,25); ctx.bezierCurveTo(85,25,75,37,75,40); ctx.fill(); } drawLove(c); var butSave = document.getElementById("save"); butSave.onclick=function(){ var svaeHref = document.getElementById("save_href"); /* * 傳入對應(yīng)想要保存的圖片格式的mime類型 * 常見:image/png,image/gif,image/jpg,image/jpeg */ var img = document.getElementById("save_img"); var tempSrc = canvas.toDataURL("image/png"); svaeHref.href=tempSrc; img.src=tempSrc; };
點擊save按鈕后,顯示圖片,點擊圖片即可彈出下載對話框。
效果如下: