微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 JavaScript 中将编码的 JPEG 图像转换为 Uint8Array

如何解决在 JavaScript 中将编码的 JPEG 图像转换为 Uint8Array

我有一个 python 服务器,它通过 websocket 将一帧 RGB 数据发送到我的 JS 脚本。该帧使用 simplejpeg python 包进行编码。 代码如下所示:

jpeg_frame = simplejpeg.encode_jpeg(image=color_frame,quality=85,colorspace='RGB',colorsubsampling='444',fastdct=True)

jpeg_frame 传递到 websocket 并发送到 JS 脚本。

然而,在 JS 方面,我想解压缩图像并将其以 Uint8Array 的形式保存,以便我可以处理数据。不必查看图像。

接收到的数据是ArrayBuffer的形式。

这是我目前所拥有的。

socketio.on('colorFrame',(data)=>{
    var mime = 'image/jpeg';
    var a = new Uint8Array(data);
    var nb = a.length;
    if (nb < 4)
        return null;
    var binary = "";
    for (var i = 0; i < nb; i++)
        binary += String.fromCharCode(a[i]);
    var base64 = window.btoa(binary);
    var image = new Image();
    image.src = 'data:' + mime + ';base64,' + base64;
    
    var canvas = document.createElement('canvas');
    var ctx = canvas.getContext('2d');

    ctx.drawImage(image,0)

    image.onload = function(){
        var image_data = ctx.getimageData(0,960,540);
        console.log(image_data);
    };
});

到目前为止,我还无法弄清楚如何解压缩图像。我不介意有损压缩的不准确,我只是想让图像恢复到原来的分辨率,并且能够将其转换为 Uint8Array。

在 JS 脚本中使用 JPEG 解码的最简单方法是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。