2012-05-10 39 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那麼普遍,所以我擔心這可能對您沒有多大用處。