Ale*_*lex 3 compression png image-processing
如果应用程序的业务逻辑表明 24 位 PNG 永远不能超过 250KB,是否有可能预测图像的最大宽度和高度是多少,并且仍然符合 250KB 的要求?
由于颜色深度、alpha 通道等有很多变量......是否有可能知道这一点?或者更接近?
这是可能的,但它可能没有用。PNG 的 zlib 压缩最大压缩比为 1032:1(对于相同字节值的长序列)。因此,250 KB 压缩将是(忽略包装和诸如此类)大约 250 MB 未压缩。对于方形图像,每像素 3 个字节,这几乎是 10,000 x 10,000 像素。
请注意,此处的另一个答案莫名其妙地假设最小压缩,即提供最小像素数,例如 500 x 333。由于问题要求“图像可能的最大宽度和高度”,因此该答案没有用。显然 10,000 x 10,000 大于 500 x 333。
更新:
基于最小 PNG 文件的精确计算得出最大 24 位像素数(压缩数据中存储的每个像素三个字节)作为文件n字节大小的函数:
floor(((n - 77) * 8 - 1) / 2) * 86 + 1
Run Code Online (Sandbox Code Playgroud)
所以对于 250*1024 = 256,000 字节,我们得到 88,037,427 个像素。对于方形图像,大约为 9383 x 9383 像素。
pmo*_*eri -1
这是不可能的,如果你将一个巨大的空白文件保存为 png,由于 png 压缩,它的尺寸会非常小。
如果您想向用户提供尺寸,您应该更改业务逻辑以接受基于尺寸而不是文件大小的图像。