2012-05-10 25 views
3

我对保存JPEG图像感兴趣,以便可以指定用于对压缩表单中所有像素进行编码的总位数。例如,如果我有一个尺寸为1024 x 1024的4通道图像,那么在没有压缩的情况下对这些位进行编码将需要4 * 8 * 1024 * 1024位。使用压缩,可能会使用显着更少的位。我想指定压缩形式的位数。压缩:在Java/Scala中以指定的比特率保存JPEG图像

迭代解决方案是在JPEG压缩质量参数上进行二进制搜索。我希望在Java或Scala中有一个直接的解决方案。

+6

不会发生,因为直到完全压缩被实际尝试时,您将不知道结果会是什么(这是有损压缩的性质)。你可以粗略地估计一下,但是没有“让它变大x字节”的电话。二进制搜索就像你要做的一样好。 –

+0

@Chris这也是我的看法。我认为你应该把你的评论变成一个答案。 – paradigmatic

+0

@paradigmatic作为我的一个规则,除非我实际回答所问的问题,否则我不会发表任何答案。在这种情况下,OP明确指出比二元搜索更好的东西是可取的,所以我不认为我真的在回答任何问题。 –

回答

0

正如@Chris所说,JPEG没有捷径。但是 - 我意识到这是一个很长的一步 - 如果您愿意使用JPEG2000而不是JPEG,则可以直接指定压缩率。如果你看JJ2000 library中的Encoder类,你会看到如何修正编码图像的比特率。

不幸的是,由于JPEG2000的支持远不如JPEG那么普遍,所以我担心这可能对您没有多大用处。