Javascript 计算ImageData对象的大小(以字节为单位)

Javascript 计算ImageData对象的大小(以字节为单位),javascript,html,html5-canvas,byte,Javascript,Html,Html5 Canvas,Byte,代码: 如何以字节为单位计算imageData对象的大小?imageData.data的类型为,长度为1个字节 因此:imageData.data.length将提供以字节为单位的大小,该大小应等于canvas.width*canvas.height*4 将宽度和高度乘以4,因为每个像素存储4个字节,RGBA 我得到307200字节==>这个值incredible@MoathHowari:您期望的值是多少?别忘了jpeg是压缩的,而且很容易达到10倍或更高的压缩比,只需很少的人工制品。@game

代码:


如何以字节为单位计算imageData对象的大小?

imageData.data的类型为,长度为1个字节

因此:
imageData.data.length
将提供以字节为单位的大小,该大小应等于
canvas.width*canvas.height*4


将宽度和高度乘以4,因为每个像素存储4个字节,RGBA

我得到307200字节==>这个值incredible@MoathHowari:您期望的值是多少?别忘了jpeg是压缩的,而且很容易达到10倍或更高的压缩比,只需很少的人工制品。@gamealchest但如果我将画布转换为图像并保存它,我不会得到这么大的尺寸解释它取决于如何保存图像,jpeg和gif压缩将给出不同的结果。您得到的值是原始图像数据。您使用哪种格式/质量?jpeg在照片上表现出色,而png在矢量/卡通图形上表现出色。至于原始数据的大小:存储图像的视频卡内存中的大小——在一般情况下——亚历山大的答案是正确的:4*widthheight。事实上,对于hidpi设备,*Canvas元素将使用devicePixelRatiocontext.backingStoreRatio*4*Canvas.widthcanvas.height,但这是另一回事。。。
// Create a new canvas
var canvas = document.createElement('canvas');
canvas.width = canvas.height = 100;
document.body.appendChild(canvas);

// Get drawing context
var ctx = canvas.getContext('2d');

// Get image data
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);