javascript - 如何获取表示为 Unit8Array 的图像的大小?
问题描述
我有一个用户头像图片的字节数组。它表示为已键入Unit8Array()
const imageBytes = new Unit8Array(...);
现在我需要检查图像大小以设置一些限制以防止用户放置大量图像,但我无法想出如何计算图像大小的想法。
这个函数怎么写?我需要以 MB 为单位获取图像大小
const getImageSizeInMB = unit8Array => { ... };
解决方案
您已经说过数组包含图像数据,所以您已经知道图像数据的大小:它是数组的大小。由于它是一个Uint8Array
,它length
会告诉您它包含多少个 8 位字节。要获得以兆字节为单位的大小,请将该数字除以 1024² (1,048,576) 或 1000² (1,000,000),具体取决于您是指许多人经常使用的兆字节(1024²) 还是在技术上更准确的每 SI 术语 (其中“mega”特指一百万 [1000²])。(如果使用“兆字节”来表示“一百万”,则 1024² 的术语是“兆字节” 。)
const sizeInMB = uint8Array.length / 1_048_576;
// or
const sizeInMB = uint8Array.length / 1_000_000;
如果数据位于包含大于 8 位字节的元素的Uint16Array
or或其他数组类型中,您将使用以下属性:Uint32Array
byteLength
const sizeInMB = theArray.byteLength / 1_048_576;
// or
const sizeInMB = theArray.byteLength / 1_000_000;
(为了稳健性,你没有理由不能用你的 ass 来做这件事Uint8Array
; onUint8Array
和Int8Array
,length
并byteLength
返回相同的值。)
推荐阅读
- regex - 从powershell字符串中提取整数
- javascript - firebase auth 不是一个函数
- scala - 如何用值“未定义”替换值“未知”?
- sql - Pentaho (spoon):为 SQL 中的多行生成主键
- reactjs - 什么是用于快照测试的 react-scripts Jest 默认序列化程序?
- android - Firebase-ui 错误
- asp.net-mvc - 如何使用带有局部视图的 ViewModel
- node.js - 将 jBPM 与 Node.js 和 PostgreSQL 集成
- c - 以递归方式打印具有其他列表(相同结构)元素的列表
- powershell - PowerShell 远程启动进程不起作用