Javascript 图像文件的ArrayBuffer应该使用哪种类型的数组?
我正在使用Javascript 图像文件的ArrayBuffer应该使用哪种类型的数组?,javascript,html,browser,md5,typed-arrays,Javascript,Html,Browser,Md5,Typed Arrays,我正在使用FileReader().readAsArrayBuffer()读取图像文件,并使用md5库创建文件的哈希。readAsArrayBuffer()返回一个ArrayBuffer const reader = new FileReader(); reader.onload = (event) => { // NEED TO CREATE TYPED ARRAY FROM const binary = new Uint8Array(event.target.result);
FileReader().readAsArrayBuffer()
读取图像文件,并使用md5
库创建文件的哈希。readAsArrayBuffer()
返回一个ArrayBuffer
const reader = new FileReader();
reader.onload = (event) => {
// NEED TO CREATE TYPED ARRAY FROM
const binary = new Uint8Array(event.target.result);
const md5Hash = md5(binary);
};
reader.readAsArrayBuffer(imageFile);
来自
我们得到:
ArrayBuffer对象用于表示通用的固定长度原始二进制数据缓冲区
它是一个字节数组,在其他语言中通常称为“字节数组”
不能直接操作ArrayBuffer的内容而是创建一个类型化数组对象或一个以特定格式表示缓冲区的DataView对象,并使用该对象读取和写入缓冲区的内容
因此,我不能直接使用md5
函数,我需要首先创建一个数组对象类型
我的选择是:
- Int8Array
- UINT8阵列
- INT16阵列
- INT32阵列
更多信息:对此没有一般性的答案,这主要取决于消费者以及他们想要处理的格式 例如,如果您想要解析PNG的实际文件格式,您实际上需要能够以BigEndian顺序读取其中的一些块,这意味着您需要在大多数个人计算机上使用DataView 但这里声称它们确实支持Uint8Array和ArrayBuffer。然而,测试它似乎确实无法处理裸体ArrayBuffers,所以使用Uint8Array,因为这是您的库的文档所说的