javascript - 如何获取以 Uint8Array 表示的图像的大小?

标签 javascript image byte buffer

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

const imageBytes = new Unit8Array(...);

现在我需要检查图像大小以设置一些限制以防止用户放置大量图像,但我不知道如何计算图像大小。

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

const getImageSizeInMB = unit8Array => { ... };

最佳答案

你已经说过数组包含图像数据,所以你已经知道图像数据的大小:它是数组的大小。由于它是一个 Uint8Array,因此它的 length 告诉您它包含多少个 8 位字节。要获得以兆字节为单位的大小,请将该数字除以 1024² (1,048,576) 或 1000² (1,000,000),具体取决于您的意思是 megabyte在许多人经常使用它的意义上(1024²),或者在技术上更准确的每 SI 术语中(其中“兆”具体表示一百万 [1000²])。 (如果使用“兆字节”表示“一百万”,则 1024² 的术语为“mebibyte”。)

const sizeInMB = uint8Array.length / 1_048_576;
// or
const sizeInMB = uint8Array.length / 1_000_000;

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

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

(为了鲁棒性,您也没有理由不能使用 Uint8Array 执行此操作;在 Uint8ArrayInt8Array 上,lengthbyteLength 返回相同的值。)

关于javascript - 如何获取以 Uint8Array 表示的图像的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67345903/

相关文章:

javascript - 在没有节点服务器的情况下使用 angular-cli 在 Chrome 上运行本地构建的 angular 2 应用程序

javascript - 第二次单击后,单选按钮值在 IE 中不正确。在其他浏览器中工作

java - 获取 0 到 255 之间数字的字节值?

javascript - 数据属性中的放大弹出设置类型

javascript - 我的 firefox 插件代码正在破坏导航栏

javascript - 如何为我的幻灯片添加过渡滑动图像?

Java解析字节

Swift:字节数组到十进制值

javascript - 平均多个数组的每一项(不同的数组长度和相同的数组名称)

python - 如何使用Opencv Python计算图像中有多少个白色 "balls"?