Base64でエンコードされたPNG画像をcanvas要素にロードしたい。私はこのコードを持っています:
<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>
Chrome 8では、次のエラーが発生します。 Uncaught TypeError: Type error
そしてFirefoxのFirebugではこれ:「オブジェクトのタイプはオブジェクトに関連付けられたパラメータの予想されるタイプと互換性がありません」コード:「17」
そのbase64には、GIMPで作成した5x5pxの黒いPNGの正方形があり、GNU / Linuxのプログラムbase64でbase64に変換します。
src
ことになっているため、を設定した直後に画像を描画するのはバグがあることがわかりましたonload
。画像の読み込みが完了していなかったため、テストの50%が失敗しました。