我要让用户上传用JPEG压缩的300x300图像。有没有办法确定这种图像的最大文件大小是什么?
我可以想象这可以通过压缩100质量的随机噪声来尝试,但是有理论上的最大值吗?
假设图像是完全不可压缩的随机噪声,可能是每像素3个字节(24位颜色)还是元数据的余量?或者压缩时这样的图像会比原始图像大吗?
答案 0 :(得分:17)
对于最高质量的图像(Q = 100),每个颜色像素需要大约8.25位 http://en.wikipedia.org/wiki/JPEG#Sample_photographs
因此,对于Q=100
图片上的300x300
,会产生(300 * 300) px * 8.25 bits/px = 742,500 bits = ~ 93 kB
还有无损JPEG
编码模式,实际上没有使用(last sentence, second paragraph)。但是他们会有RGB典型的24 bits/pixel
。
答案 1 :(得分:4)
jpeg元数据大小没有限制,这意味着jpeg文件的大小没有限制。请参阅此答案,我已将其链接以解释原因以及元数据可能变大的实际情况示例:What is the maximum size of JPEG metadata?
因此,如果假设最大实际/实际尺寸适合您的目的,那么您应该将该示例考虑在您的计算中。在许多情况下,只要在程序的预期用途范围之外拒绝超出最大限度的内容,就可以了。
但如果你绝对必须依赖理论,那么不幸的是它是一个大胆的∞
注意:我对jpeg规范没有太多的个人经验,因此我将讨论人们对允许重复字段的说法,以及多个评论字段。如果您找到相反的证据,请纠正我。