web-dev-qa-db-ja.com

類似の画像を可逆圧縮しますか?

フォトライブラリのサイズを小さくする必要があるので、当然圧縮したいと思います。それらの多くは完全に同一ではありませんが、それでも非常に似ています(同じシーンの後続のショット)。この事実を利用してこれらの画像を効果的に圧縮する圧縮アルゴリズムはありますか? 7Zip(LZMA)は役に立たない。

10
Erik

Paq 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分と550MBのメモリが必要でした。

fp8_v2.exe -7 images *.png

JPGファイルの圧縮には、以下を使用する場合、約5分と125MBのメモリが必要でした。

fp8_v2.exe -5 images image12*.jpg

参照: jpgロスレス画像圧縮テスト

11
jftuga

十分に大きなウィンドウがあれば、算術コーダーを使用したバロウズウィーラー変換がこれに理想的であると想像します。少量の写真に等しいブロックサイズを使用するようにBZIP2を構成するとどうなりますか?速度が遅くなり、より多くのメモリが必要になりますが、圧縮率は急上昇するはずです。そして、あなたはもう大きなブロックサイズでLZMAを試しましたか?

1
Peter Hanneman

これは写真では機能しないが、ピクセルごとに同じ領域が大きい複数の画像がある場合に機能する可能性のある簡単な解決策です。画像をBMP(PNGではない)またはGIF)そしてそれらをTARし、XZのようなまともなコンプレッサーで圧縮します。

tar -c myDirectory | xz -9 >myDirectory.tar.xz

TARとXZの代わりに、「ソリッドアーカイブ」オプションを備えた7-Zipを使用して、ほぼ同じパフォーマンスを得ることができます。このようにして、16個の同様のスクリーンショットを圧縮できました。これらは別々のPNGファイルとして保存するとそれぞれ約900 KBかかり、2MBのアーカイブに保存されました。このソリューションの利点は、一般的なファイル形式を使用するため、新しいソフトウェアをインストールしなくても機能することです。 (残念ながら、古くてさらに一般的なプログラムGZIPとBZIP2は、私にとってはうまくいきませんでした。おそらく、BZIP2のブロックサイズを900 KBより大きく設定できないためです。)

1
Jaan

私が見たことはありません。おそらく最も近いのは、いくつかの同様のJPEGを取得し、それらをMJPEGムービーに入れることです。同様の目的でAPNGまたはアニメーションGIFを使用することもできます。

それがどれだけうまくいくかはわかりませんが、あなたはすでに映画のスクリーンショットについて話しているようですので、それらを映画ファイルに再パックすることは...逆効果に聞こえます。

画面の元のクリップがまだある場合は、正確なフレームを抽出できるコマンドラインツールを見つけて、その一意の識別子をテキストファイルのどこかにコピーするだけで、いつでもできるようになります。必要なときにフレームを簡単に再抽出できます。

0
afrazier