如何在jpeg或png格式的字节数组中在画布上绘制图像

 丶玛骝 发布于 2023-01-30 16:07

就像标题所说,我有一个表示图像内容的字节数组(可以是jpeg或png).

我想在常规画布对象上绘制它


我怎样才能做到这一点?


更新我试过这个(不成功):( imgData是一个png作为字节数组"按原样"通过WebSockify发送给客户端)

function draw(imgData) {
    "use strict";

    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var rdr = new FileReader();
    var imgBlob = new Blob([imgData], {type: "image/png"});
    rdr.readAsBinaryString(imgBlob);

    rdr.onload = function (data) {
        console.log("Filereader success");
        var img = new Image();
        img.onload = function () {
            console.log("Image Onload");
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
        };
        img.onerror = function (stuff) {
            console.log("Img Onerror:", stuff);
        };
        img.src = "data:image/png;base64," + window.btoa(rdr.result);
    };

}

我总能到达 img.onerror()

此外,在我的文件系统上使用HEX编辑器读取文件后,我可以看到字节数组与原始文件相同.

1 个回答
  • 这个作品:

    function draw2(imgData, coords) {
        "use strict";
        var canvas = document.getElementById("myCanvas");
        var ctx = canvas.getContext("2d");
    
        //var uInt8Array = new Uint8Array(imgData);
        var uInt8Array = imgData;
        var i = uInt8Array.length;
        var binaryString = [i];
        while (i--) {
            binaryString[i] = String.fromCharCode(uInt8Array[i]);
        }
        var data = binaryString.join('');
    
        var base64 = window.btoa(data);
    
        var img = new Image();
        img.src = "data:image/png;base64," + base64;
        img.onload = function () {
            console.log("Image Onload");
            ctx.drawImage(img, coords[0], coords[1], canvas.width, canvas.height);
        };
        img.onerror = function (stuff) {
            console.log("Img Onerror:", stuff);
        };
    
    }
    

    2023-01-30 16:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有