我需要減小照片庫的大小,所以我自然想要壓縮它們。其中許多並不完全相同,但仍然非常相似(同一場景的後續鏡頭)。有沒有什麼壓縮演算法可以利用這一事實來有效地壓縮這些圖像? 7zip (LZMA) 沒用。
答案1
你可以嘗試帕克8號(fp8_v2.zip)。我自己在 1440 個相似的 PNG 圖像上嘗試過,然後又在 111 個相似的 JPG 圖像上嘗試過。這是結果。
- 1440 個 PNG 文件,28,631,615 位元組 => 壓縮後 2,058,653 位元組
- 111 個 JPG 文件,15,003,820 位元組 => 壓縮後 489,096 位元組
使用以下命令時,PNG 檔案的壓縮大約需要 8 分鐘和 550 MB 記憶體:
fp8_v2.exe -7 images *.png
使用以下命令時,JPG 檔案的壓縮大約需要 5 分鐘和 125 MB 記憶體:
fp8_v2.exe -5 images image12*.jpg
也可以看看:jpg無損圖片壓縮測試
答案2
這是一個簡單的解決方案,不適用於照片,但如果有多個圖像具有大的逐像素相同區域,則可能會起作用:以BMP(不是PNG 或GIF)等未打包格式保存圖像,然後TAR並壓縮它們使用像 XZ 這樣的不錯的壓縮器,例如在 Linux 上使用類似的東西
tar -c myDirectory | xz -9 >myDirectory.tar.xz
可以使用帶有“solid archive”選項的 7-Zip 來代替 TAR 和 XZ,以獲得大致相同的性能。這樣,我可以將 16 個類似的螢幕截圖(保存為單獨的 PNG 檔案時每個大約 900 KB)壓縮到 2 MB 的檔案中。此解決方案的優點是它使用通用檔案格式,因此無需安裝新軟體即可運行。 (不幸的是,較舊且更常見的程式 GZIP 和 BZIP2 對我來說效果不佳 - 可能是因為 BZIP2 的區塊大小無法配置為大於 900 KB。)
答案3
我想,如果有足夠大的窗口,使用算術編碼器進行的 burrows-wheeler 變換將是理想的選擇。如果您將 BZIP2 配置為使用等於一小批照片的區塊大小,會發生什麼?它會更慢並佔用更多內存,但壓縮率應該會飆升。您是否嘗試過具有更大區塊大小的 LZMA?
答案4
不是我見過的。最接近的可能是採用幾個相似的 JPEG 並將它們放入 MJPEG 電影中。您也可以使用 APNG 或動畫 GIF 來實現類似的目的。
我不確定這效果如何,聽起來你已經在談論電影截圖了,所以將它們重新打包到電影文件中聽起來......適得其反。
如果您仍然擁有螢幕來源的剪輯,也許更好的方法是簡單地找到一個命令列工具,該工具可以為您提取確切的幀,將該唯一標識符複製到文字檔案中的某個位置,然後您隨時可以當您需要時可以輕鬆地重新提取框架。