我打算让用户上传用JPEG压缩的300x300图像.有没有办法确定这种图像的最大文件大小是多少?
我可以想象这可以通过压缩100质量的随机噪声来尝试,但是理论最大值是多少?
假设图像是完全不可压缩的随机噪声,可能是每像素3个字节(24位颜色)还是元数据的余量?或者在压缩时这样的图像会比原始图像变大吗?
mik*_*ike 18
对于最高质量的图像(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编码模式,实际上没有使用(最后一句,第二段).但他们会有典型的RGB 24 bits/pixel.
小智 5
jpeg元数据大小没有限制,这意味着jpeg文件的大小没有限制。请参阅我已链接的答案,以解释其原因,并提供一个示例实例,说明元数据可能变大的现实情况:JPEG元数据的最大大小是多少?
因此,如果假设最大的实际/实际大小适合您的目的,那么您应该将该示例纳入计算中。在许多情况下,最好拒绝超出最大值的东西,而不是程序预期用途的范围。
但是,如果您绝对必须依靠理论,那么不幸的是,这是一个很大的胆量?
注意:我对jpeg规范没有太多的个人经验,因此我不赞成人们所说的关于允许重复字段以及多个注释字段的说法。如果发现相反的证据,请纠正我。