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