Javascript 将图像src数据:转换为Uint8Array

Javascript 将图像src数据:转换为Uint8Array,javascript,Javascript,我想使用()来调整图像大小,但它要求我使用Uint8Array,我只有一个带有 src = 'data:image/jpeg;base64,/9j/4AAQ...' 我不知道如何将其转换为UINT8阵列,有什么想法吗? 谢谢您需要将图像应用到画布并使用getImageData() 下面是一个简单的例子,说明如何做到这一点: //create canvas, set base64 test img var canvas = document.createElement('canvas'),

我想使用()来调整图像大小,但它要求我使用Uint8Array,我只有一个带有

src = 'data:image/jpeg;base64,/9j/4AAQ...'
我不知道如何将其转换为UINT8阵列,有什么想法吗?

谢谢

您需要将图像应用到画布并使用
getImageData()

下面是一个简单的例子,说明如何做到这一点:

//create canvas, set base64 test img
var canvas = document.createElement('canvas'),
    ctx = canvas.getContext('2d'),
    base64 = 'data:image/jpeg;base64...'; //base64 string

//size canvas
canvas.width = 34,
canvas.height = 34;

//create image, set src to base64 and onload draw to canvas
var image = new Image();
image.onload = (function(canvas, ctx){
    return function(){
        ctx.drawImage(this, 0, 0);

        //now we can finally get a Uint8ClampedArray
        var imageData = ctx.getImageData(0, 0, 34, 34);
        console.log(imageData.data);
    };
})(canvas, ctx);
image.src = base64;

从内存中,存储在画布中的数据存储在同一类型的类型化数组中。因此,您可以将图像绘制到画布上,然后在画布上调用getImageData。在返回的对象中,将有一个如您所愿的数组。当然,如果你想通过画布,你可以自己调整大小,不需要库。这里有一个用画布缩放图像的例子:(忽略上传部分)嗨@EvilZebra!如果不使用
Image
类,是否可以从
ctx.getImageData
获得相同的结果?恐怕不能@SergeyVolkov,将图像数据放入画布的唯一其他方法是,它本身需要
uint8clampedaray
。而且,由于字符串包含图像标题和其他数据,我们无法从base64编码的图像中轻松提取像素颜色数据。