Saya ingin memuat gambar PNG yang dikodekan dalam Base64 ke elemen kanvas. Saya memiliki kode ini:
<html>
<head>
</head>
<body>
<canvas id="c"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("c");
var ctx = canvas.getContext("2d");
data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";
ctx.drawImage(data, 0, 0);
</script>
</body>
</html>
Di Chrome 8 saya mendapatkan kesalahan: Uncaught TypeError: Type error
Dan di Firebug Firefox ini: "Jenis objek tidak kompatibel dengan jenis yang diharapkan dari parameter yang terkait dengan objek" kode: "17"
Dalam base64 itu adalah 5x5px persegi hitam PNG yang telah saya buat di GIMP dan mengubahnya menjadi base64 di program GNU / Linux base64.
src
, karena Anda seharusnya menggunakanonload
callback untuk memastikan gambar selesai dimuat. 50% pengujian saya gagal karena gambar belum selesai dimuat.ctx.drawImage(this,0,0);
sehingga memastikan variabel gambar mengacu pada gambar yang benar. Jawaban yang bagus!data:image/
panjangnya besar kita akan mendapatkan414 (Request-URI Too Long
Jawaban Jerryf baik-baik saja, kecuali satu kekurangan.
(Seperti yang ditunjukkan Totty.js.)
var canvas = document.getElementById("c"); var ctx = canvas.getContext("2d"); var image = new Image(); image.onload = function() { ctx.drawImage(image, 0, 0); }; image.src = "data:image/ png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";
sumber
onload
sebelumnyasrc
... Saya membuat kebiasaan untuk melakukannya.