2016-02-09 69 views
0

我想要使用Encoder.Quality值进行压缩后计算/估计图像文件大小(.jpg)是多少。 这里我估计之前不应该进行任何压缩,有没有公式可以做到这一点?在不执行压缩的情况下计算/估计压缩文件大小

有没有粗略的估计。我想将图像文件大小减少到< 250kb,而无需进行迭代压缩。

有基于图像(JPG)的宽度,高度和深度(DPI)等任何Encoder.Quality值估计...

在此先感谢。

+0

我认为迭代压缩比其他任何计算/估计都快。但是,您应该压缩到内存,而不是将文件写入磁盘。 – wimh

+2

不可能回答 - 你甚至不提及算法。尽管如此,除了最低效的算法外,压缩比取决于数据,无法计算。您只能根据算法,内容类型(例如剪贴画,照片)和质量等级制作推荐人 –

+0

我已访问链接http://stackoverflow.com/questions/2094064/how-to-resize-a-picture -to-a-specific-file-size –

回答

1

最终,直到你做出实际的压缩,你才能知道。另一方面,(香农的)数据熵通常是压缩文件比特率的良好估计。为获得最佳精度,您需要计算数据的离散余弦变换(DCT),并应用与您不想使用的质量Q相对应的量化。但是,您也可以尝试在原始域中应用量化,然后计算熵。您也可以尝试评估图像的一部分,并将压缩的比特率外推到整个图像。最后,如果您正在压缩的图像类型或多或少是均匀的 - 即,您可以获得大多数图像的相似压缩比率 - 您可以创建一个查找表来获得您的估计值。如果你的图像不是同质的,你也可以尝试对图像进行分类(也可能基于熵),并为每个类使用不同的查找表。

+0

我同意没有准确的估计,但我的意图是找到至少粗略的估计。 –

+0

你有两个(可能是粗糙的)估计量:基于熵和基于平均压缩大小的估计量。如果你需要帮助计算熵,你可以在线获得一些启发(例如http://www.csharpprogramming.tips/2013/07/Data-Entropy.html)。 – mhernandez