二維碼現(xiàn)在已經(jīng)成為生活中必不可少的一部分。它已經(jīng)成為了一種方便、易用的工具。在前端開發(fā)中使用二維碼也是非常常見的,通常我們需要把二維碼保存到本地以便于后續(xù)使用。本文將會介紹如何使用JavaScript保存二維碼到本地。
保存二維碼到本地的方法有很多種。但是基本上都是將二維碼轉(zhuǎn)換成圖片的形式,再通過一個下載鏈接或者一個二進制流的形式保存到本地。
最簡單的方法是使用瀏覽器自帶的下載功能。例如,我們可以將生成的二維碼作為背景圖片,然后通過CSS將整個頁面保存為圖片,最后將保存后的圖片文件下載到本地。
// 將生成的二維碼作為背景圖片 var qrcode = document.getElementById('qrcode'); var dataUrl = qrcode.toDataURL('image/png'); document.body.style.backgroundImage = 'url(' + dataUrl + ')'; // 將整個頁面保存為圖片 html2canvas(document.body).then(function(canvas) { // 獲取保存后的圖片文件 var dataUrl = canvas.toDataURL('image/png'); // 下載圖片 var link = document.createElement('a'); link.href = dataUrl; link.download = 'qrcode.png'; link.click(); });
另外一種方法就是使用Canvas將二維碼保存為圖片。在Canvas上繪制二維碼,再通過Canvas的toDataURL()方法將Canvas轉(zhuǎn)換為dataURL,最終通過一個下載鏈接或者二進制流下載到本地。
// 在Canvas上繪制二維碼 var qrcode = document.getElementById('qrcode'); var canvas = document.createElement('canvas'); canvas.width = qrcode.width; canvas.height = qrcode.height; var ctx = canvas.getContext('2d'); ctx.drawImage(qrcode, 0, 0); // 將Canvas轉(zhuǎn)換為dataURL var dataUrl = canvas.toDataURL('image/png'); // 下載圖片 var link = document.createElement('a'); link.href = dataUrl; link.download = 'qrcode.png'; link.click();
如果我們需要將二維碼保存為二進制流,則需要使用以下代碼:
// 在Canvas上繪制二維碼 var qrcode = document.getElementById('qrcode'); var canvas = document.createElement('canvas'); canvas.width = qrcode.width; canvas.height = qrcode.height; var ctx = canvas.getContext('2d'); ctx.drawImage(qrcode, 0, 0); // 將Canvas轉(zhuǎn)換為Blob,再通過一個二進制流下載到本地 canvas.toBlob(function(blob) { var link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = 'qrcode.png'; link.click(); }, 'image/png');
總結(jié)一下,使用JavaScript保存二維碼有兩種方法,一種是將二維碼作為背景圖片,再通過CSS將整個頁面保存為圖片;另一種是在Canvas上繪制二維碼,再通過Canvas的toDataURL()方法將Canvas轉(zhuǎn)換為dataURL,最終通過一個下載鏈接或者二進制流下載到本地。