簡體   English   中英

通過ctx.drawImage獲取圖像並轉換為base64

[英]Get image via ctx.drawImage and convert to base64

我想從base64的faviconkit.com獲取圖像。 由於Cors, FetchXHR無法正常工作。 唯一ctx.drawImagectx.drawImage 任何其他基於JS的方法也可以提供幫助。 謝謝

這是我到目前為止的內容:

 const img = new Image(); const canvas = document.getElementById('canvas'); const base64 = document.getElementById('base64'); const ctx = canvas.getContext('2d'); const dataURL = canvas.toDataURL(); img.onload = () => { ctx.imageSmoothingEnabled = false; ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.drawImage(img, 0, 0, 32,32); }; img.src = "https://api.faviconkit.com/google.com/32"; base64.style.backgroundImage = "url('" + dataURL + "')"; 
 #base64 { width: 32px; height: 32px; background-color: red; } 
 <canvas id="canvas" width="32" height="32"></canvas> <div id="base64"></div> 

https://jsfiddle.net/on8krzub/

首先,您需要在加載圖像后調用canvas.toDataURL() 其次,如果沒有Access-Control-Allow-Origin: *您將無法將遠程圖像轉換為數據URI。

因此,您有一些方法可以解決您的問題:

但是,即使遠程映像返回Access-Control-Allow-Origin: *標頭,也不能調用canvas.toDataURL()除非您指定img.crossOrigin = 'Anonymous'

順便說一句,我不知道這對您是否重要,但是您必須記住canvas.toDataURL()不會返回原始的Base64字符串。 無論如何,如果有其他想法和示例, 請查看此頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM