【发布时间】:2012-06-07 06:31:04
【问题描述】:
我有兴趣保存 JPEG 图像,以便我可以指定用于以压缩形式对所有像素进行编码的总位数。例如,如果我有一个大小为 1024 x 1024 的 4 通道图像,则对未压缩的位进行编码将需要 4 * 8 * 1024 * 1024 位。使用压缩,可以使用显着更少的位。我想指定压缩形式的位数。
迭代解决方案是对 JPEG 压缩质量参数进行二分搜索。我希望在 Java 或 Scala 中有一个直接的解决方案。
【问题讨论】:
-
不会发生,因为在实际尝试完全压缩之前,您不会知道结果是什么(这就是有损压缩的本质)。您可以粗略估计一下,但没有“使其 x 字节变大”的调用。二进制搜索与您将要做的一样好。
-
@Chris 这也是我的看法。我认为您应该将您的评论转化为答案。
-
@paradigmatic 作为我的一项规则,除非我真正回答所提出的问题,否则我不会发布任何内容作为答案。在这种情况下,OP 明确指出比二分搜索更好的东西是可取的,所以我不认为我真的在回答任何问题。
-
@Chris 这不是有损压缩的本质。有一些有损压缩方案可以非常直接地估计结果大小——比如减少位深度。还有一些无损压缩方案不允许估计结果大小(如 zip 和 png)。但我认为确实每个体面的压缩都有不同的压缩比,具体取决于内容(具有固定质量)。虽然一些压缩器允许指定目标比特率,但它们试图通过改变质量来满足这一目标。
标签: java scala compression jpeg