2013-02-21 94 views
3

我有一個關於JPEG文件寫入的問題。假設我有一個PNG文件example.png,並且我想將文件格式更改爲JPEG,而不會丟失任何信息。對於現在正在,我有兩個解決方案:無損JPEG文件寫入

  • 解決方案1:執行文件格式變換用MATLAB

    I = imread( 'example.png');

    imwrite(I,'example.jpg','Mode','lossless');

    II = imread('example.jpg');

    different = I-II;

    max(differ(:))

    此解決方案可以產生無損JPEG文件。但是,此解決方案的問題是,原始圖像中的某些信息(如DPI分辨率)可能會丟失。此外, 產生的輸出圖像不能被流行的圖像查看器(如IrfanView和Windows Paint)查看。

  • 解決方案2:使用IrfanView軟件。 使用IrfanView程序的「另存爲」功能,我們可以很容易地更改文件格式。但是,儘管在保存JPEG文件時我已經設置了「最佳質量100」選項,但輸出圖像也顯示一些信息丟失。對於所有像素,這兩個圖像之間的差異不爲零。

我想知道我應該怎麼做才能解決問題。任何想法將不勝感激。

+0

解決您的問題非常容易:保持PNG圖像。 – mmgp 2013-02-21 16:10:29

+0

Jpeg2000是一種無損jpeg文件格式,但不幸的是幾乎沒有軟件支持jpeg2000。 .png和.gif是無損文件的最佳選擇。 – 2013-02-21 16:18:22

+0

你的第一個假設需要改變。 「正常」的JPEG圖像使用有損壓縮格式。正如@ mmgp所說,與PNG保持合作是一個不錯的選擇。如果你正在尋找更好的壓縮比,那麼你將需要放棄無損的想法。 – BitBank 2013-02-22 16:04:10

回答

1

此問題沒有解決方案(但截至2018年)。

如果您希望JPEG文件在大多數圖像查看器中可用,則無法避免使用有損壓縮。

JPEG的常見支持版本基於DCT壓縮,根據定義,它執行轉換和舍入,從而導致一些精度損失。

很少支持替代的無損JPEG壓縮方法JPEG-LS。

還有JPEG-XT擴展,它是有損圖像+圖層的組合,用於重建無損原始圖像。它在JPEG圖像查看器中失敗,但它更新,我不知道它是否在任何地方實現。

如果您確實需要無損,請使用PNG。使用JPEG,您可以獲得的最好效果是在質量= 100(這不是字面上的100%)時,RGB色彩空間中的JPEG損失最小。