2017-07-28 24 views
-1

LZW圧縮に関する多くの情報源を確認しましたが、画像ファイルでは機能しませんでした。ここで Java LZW画像で圧縮&解凍

は、私がこれまでに確認されたものなリソースです:

https://www.codemiles.com/java/lzw-data-compression-decompression-algorithm-java-code-t99.html

この1圧縮ファイルには、任意のリソースを与えてもらえ元のファイル

https://codereview.stackexchange.com/questions/122080/simplifying-lzw-compression-decompression

よりも大きいが、そのイメージ圧縮を使用しますか? ありがとうございます!

+1

どのような画像ですか? GIFはすでにLZWで圧縮されています。実際、ほとんどの画像フォーマットは圧縮されています。これらはどのようなイメージですか?そして、どんな種類の圧縮が受け入れられますか?最後に、オフサイトのリソース(それは話題にならない)を求めないでください。 –

+0

jpegファイルを圧縮しようとしましたが、圧縮ファイルが元のファイルよりも大きいようです。 –

+1

正しい。 JPEGは既に圧縮されています。圧縮ファイルを圧縮すると、通常はファイルが大きくなります。 –

答えて

0

すでに圧縮されているイメージを圧縮するのは良い考えではありません。なぜなら、最初の圧縮では2番目のコンプレッサーが使用できる統計ヒントがなくなるからです。これは、JPEG、PNG、GIF、TIFF、およびWebPイメージ形式で使用されているような現代の圧縮アルゴリズムでは、少なくとも真実です。通常、16進エディタで表示される圧縮ファイルは、ランダムバイトのストリームのように見え、ランダムデータ(またはランダムデータに類似した統計的プロパティを持つ非ランダムデータ)は圧縮できません。通常、結果はストレージ形式のオーバーヘッドによって元のサイズよりもさらに大きくなります。賢明なコンプレッサーはこの状態を検出し、元のデータを圧縮するのではなく単に保存することに戻ります。

画像がさらに圧縮されていると思われる場合は、まず圧縮解除する必要があります。その後、より良い結果が得られる可能性のある別のコンプレッサーを試すことができます。しかし、私は、LZWの変種があなたにJPEGよりも大きな利益を与えるとは思っていません。圧縮アルゴリズムのLempel-Zivファミリーの本当に巧妙な拡張ですが、LZWは純粋に無損失のテクニックであるため、画像データの統計的分布に根差した達成可能な圧縮率の本質的な制限があります。 JPEGおよび他の損失のある画像フォーマットは、画像品質をトレードするため、ロスレス技術を容易に凌駕することができます。

GIF形式は特殊なケースであることに注意してください。無損失のLZW圧縮を使用していますが、最大256エントリのカラーパレットが必要です。写真のようなカラフルな画像をGIFとしてエンコードするには、まず256色のパレットを得るために色空間を量子化する必要があります。これはJPEGとWebPの損失によって使用されるアルゴリズムとはまったく異なりますが、やはり損失のあるテクニックです。画像の量子化されたGIF画像は、画像内のRGB情報の減少により良好に圧縮されるが、人間の顔、花の葉、曇った天に見られるような色勾配の顕著な劣化を露呈する。

脇に:GIFで大きなカラーパレット(1024など)が許可されている場合、写真画像の本当のキラーフォーマットになる可能性があります。たぶん、GIF17a形式のアップデートが必要なのでしょうか?