【问题标题】:Html5 Canvas and base64 imageHtml5 Canvas 和 base64 图像
【发布时间】:2013-01-25 20:20:50
【问题描述】:

我有一个 base64 图像,看起来像这样:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAADwCA...... 

有没有办法可以使用上面的编码图像在画布上绘制它?有没有人有这方面的例子。

已编辑:

这对我有用,它仅在图像而不是 base64

时才绘制图像

这行得通:

<script type="text/javascript">

        var pos = 0, ctx = null, ctx2 = null,saveCB, image = [], image2 = new Image();

        var canvas = document.createElement('canvas');


        var image2 = new Image();

        canvas.setAttribute('width', 320);
        canvas.setAttribute('height', 240);
        ctx = canvas.getContext('2d');
        image = ctx.getImageData(0, 0, 320, 240);

        var saveCB = function (data) {
            var col = data.split(';');
            var img = image;
            for (var i = 0; i < 320; i++) {
                var tmp = parseInt(col[i]);
                img.data[pos + 0] = (tmp >> 16) & 0xff;
                img.data[pos + 1] = (tmp >> 8) & 0xff;
                img.data[pos + 2] = tmp & 0xff;
                img.data[pos + 3] = 0xff;
                pos += 4;
            }

            if (pos >= 4 * 320 * 240) {
                ctx.putImageData(img, 0, 0);
                foto = canvas.toDataURL("image/png");
                $("#photo").val(foto);
                alert($("#photo").val()); 


                ctx2 = document.getElementById("canvas2").getContext("2d");
                ctx2.clearRect(0, 0, 320, 240);
                image2.src = 'http://blackberry12.com/uploads/allimg/110311/2-110311153Z90-L.jpg';
                ctx2.drawImage(image2,0,0);           

                pos = 0;
            }
        };
</script>

如果我将 image2.src 更改为 foto 或 $("#photo").val() 我不会得到任何东西,只是一张白色的画布。

已编辑 根据我的调查,每次拍照和编码时,我都会得到相同的 base64 代码。看起来base64代码真的是一个白屏。谁能帮帮忙,看不到我哪里出错了。

【问题讨论】:

    标签: jquery html canvas


    【解决方案1】:

    绝对的。

    var img = new Image();
    img.src = "data:image/png;base64,.............";
    ctx.drawImage(img,0,0);
    

    图像可立即用于绘制。

    【讨论】:

    • 它的工作示例,如果你会原谅无耻的自我推销,请转到pokefarm.org 并输入 Konami 代码(↑↑↓↓←→←→BA&lt;space&gt; - 不要按 Shift)你会得到一个我制作的迷你游戏使用这种精确的技术来加载其图像。
    • 好的,非常感谢,我会试试这个,让你知道它是怎么回事
    • 接收值的输入字段正在由 jquery 填充我如何监听该字段的更改?如果没有用户交互,更改、现场活动将无法正常工作
    • 嗯...有什么方法可以在更改字段时使用新源更新img.src
    • @DominicTobias onload 在加载外部资源时是必需的,为了安全起见,使用它并没有真正的危害,但是是的,在处理数据 URL 时,不需要 @987654326 @.
    猜你喜欢
    • 1970-01-01
    • 2012-05-18
    • 2014-12-17
    • 2011-12-09
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多