Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取表示为Unit8Array的图像的大小?_Javascript_Image_Byte_Buffer - Fatal编程技术网

Javascript 如何获取表示为Unit8Array的图像的大小?

Javascript 如何获取表示为Unit8Array的图像的大小?,javascript,image,byte,buffer,Javascript,Image,Byte,Buffer,我有一个用户头像图片的字节数组。它表示为类型化的Unit8Array() const imageBytes=new Unit8Array(…); 现在我需要检查图像大小,设置一些限制,以防止用户放置大量图像,但我无法想出如何计算图像大小的方法 如何编写此函数?我需要以MB为单位获取图像大小 const getImageSizeInMB=unit8Array=>{…}; 您说过数组包含图像数据,因此您已经知道图像数据的大小:它是数组的大小。由于它是一个Uint8Array,它的长度告诉您它包含多

我有一个用户头像图片的字节数组。它表示为类型化的
Unit8Array()

const imageBytes=new Unit8Array(…);
现在我需要检查图像大小,设置一些限制,以防止用户放置大量图像,但我无法想出如何计算图像大小的方法

如何编写此函数?我需要以MB为单位获取图像大小

const getImageSizeInMB=unit8Array=>{…};

您说过数组包含图像数据,因此您已经知道图像数据的大小:它是数组的大小。由于它是一个
Uint8Array
,它的
长度告诉您它包含多少8位字节。要获得以兆字节为单位的大小,请将该数字除以1024²(1048576)或1000²(1000000),这取决于您的意思是许多人经常使用它(1024²)还是更精确的每SI术语(其中“mega”特别指一百万[1000²])。(如果使用“兆字节”表示“一百万”,则1024²的术语为“.”)

如果数据位于
uint16数组
uint32数组
或包含大于8位字节的元素的其他数组类型中,则应使用
byteLength
属性:

const sizeInMB = theArray.byteLength / 1_048_576;
// or
const sizeInMB = theArray.byteLength / 1_000_000;

(为了稳健性,
Uint8Array
上的
Uint8Array
Int8Array
length
bytellength
返回相同的值,这是没有理由的。),所以您已经知道图像数据的大小:它是数组的大小。由于它是一个
Uint8Array
,它的
长度告诉您它包含多少8位字节。要获得以兆字节为单位的大小,请将该数字除以1024²(1048576)或1000²(1000000),这取决于您的意思是许多人经常使用它(1024²)还是更精确的每SI术语(其中“mega”特别指一百万[1000²])。(如果使用“兆字节”表示“一百万”,则1024²的术语为“.”)

如果数据位于
uint16数组
uint32数组
或包含大于8位字节的元素的其他数组类型中,则应使用
byteLength
属性:

const sizeInMB = theArray.byteLength / 1_048_576;
// or
const sizeInMB = theArray.byteLength / 1_000_000;

(为了稳健性,
Uint8Array
Int8Array
length
bytellength
返回相同的值,您没有理由不能用
Uint8Array
也这样做。)

先生,非常感谢!1048576是一MB中的字节数吗?@Snowman这是大多数人称之为“是”的字节数。然而,还有另一个定义是一百万(1000000),而不是1048576,这是通常用于大容量存储设备大小的定义。有些人认为1048576这个词应该是。是的,有时它真的令人困惑。有人说1GB=1024MB,也有人说1GB=1000MB。这就是二进制前缀被发明的原因。但遗憾的是,这并没有让事情变得更清楚。如果你说“兆字节”,人们仍然不知道你的意思是什么,如果你说“兆字节”试图弄清楚你的意思是1024²,人们只是茫然地盯着你看,因为他们不知道你刚才说的是什么,他们想知道你是不是把“兆字节”读错了-DSir,非常感谢!1048576是一MB中的字节数吗?@Snowman这是大多数人称之为“是”的字节数。然而,还有另一个定义是一百万(1000000),而不是1048576,这是通常用于大容量存储设备大小的定义。有些人认为1048576这个词应该是。是的,有时它真的令人困惑。有人说1GB=1024MB,也有人说1GB=1000MB。这就是二进制前缀被发明的原因。但遗憾的是,这并没有让事情变得更清楚。如果你说“兆字节”,人们仍然不知道你的意思是什么,如果你说“兆字节”试图弄清楚你的意思是1024²,人们只是茫然地盯着你看,因为他们不知道你刚才说的是什么,他们想知道你是不是把“兆字节”读错了-D