問題タブ [lzw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
589 参照

java - iText: 画像の抽出中にエラーが発生しました -- LZWDecoder で NullPointerException を取得しています

iText v5.4.2 を使用しています。PDFファイルから画像を解析しようとしています。特定の PDF ファイルの特定の画像に対して NullPointerException が発生します。1 つの「問題のある」画像を含む PDF ファイルは、https ://dl.dropboxusercontent.com/u/3585277/LZW_Error.pdf からダウンロードできます。

簡単なデモを次に示します。

0 投票する
1 に答える
1975 参照

java - LZW エンコーダー デコーダー - シンボル テーブル

LZW 圧縮は、長さ 256 のシンボル テーブル (辞書) を使用すると機能し、エンコーダーとデコーダーは両方とも 256 で機能し、すべて正常に機能しますが、この数値をたとえば 512、1024、4096 に増やすと、デコードされたファイルの出力は同じではありません。最初の入力ファイルで...ヒントはありますか?

ソースコード:

LZWEncoder.java:

LZWDecoder.java:

LZWst.java:

LookAheadIn.java:

0 投票する
1 に答える
619 参照

c - LZW 圧縮を使用して ZIP ファイルを圧縮すると、サイズが大きすぎる圧縮ファイルが作成される

LZW圧縮方法(次のリンクで提供されるコード)を使用してzipファイルを圧縮しようとしましたが、

http://rosettacode.org/wiki/LZW_compression#C

エンコードされたファイルの長さが元のファイル サイズよりも長すぎますが、その理由は何ですか? リアルタイムで何が起こっているのかを理解するのを手伝ってください。

0 投票する
1 に答える
216 参照

c++ - C ++の通常の32ではなく、バイナリファイルの任意の整数に16ビットのみを割り当てる方法は?

LZW アルゴリズムとハッシュ テーブルを使用して圧縮ファイルを作成するプログラムがあります。私の圧縮ファイルには現在、ハッシュテーブルのインデックスに対応する整数が含まれています。この圧縮ファイルの最大整数は約 46000 で、16 ビットで簡単に表すことができます。次のコードを使用して、この「compressedfile.txt」をバイナリファイル「binary.bin」に変換すると(ファイルサイズをさらに縮小するため)、「binary.bin」ファイルに32ビット整数が含まれます。たとえば、圧縮ファイルに数字 84 がある場合、バイナリ ファイルでは 5400 0000 に変換されます。

私の質問は、「5400 0000」の末尾の「0000」を破棄できないかということです。これにより、ファイルで余分な 2 バイトが使用されます。これは、私の最大整数が 46000 であり、2 バイトのみで表現できるため、すべての整数に当てはまります。私のバイナリファイルのベースをそのように設定できるコードはありますか? 私の質問が明確であることを願っています。

0 投票する
2 に答える
1165 参照

java - 文字列の内容をバイト配列にコピーする (LZW エンコーディング手法)

LZW 圧縮および解凍技術を実装しようとしています。私のプログラムは、任意のファイルを InputStream として受け取り、それをバイト配列に読み取ります。次に、圧縮アルゴリズムが適用され、エンコードされたバイトが文字列変数に返されます。

次に、元の数値を返す解凍アルゴリズムを適用します。

元のファイルを取得するには、この文字列の内容をバイト配列に転送し、この配列を出力ストリームに書き込む必要があります。

解凍された文字列の内容をバイト配列にコピーすることが、私の問題です。

これまでのコードの出力は、これにリンクしているように見えます-

オリジナル = -119807871131026100001373726882000170001686000.....

圧縮 = [91, 45, 49, 49, 57, 44, 32, 56, 48, 261, 55, 56, 265, 49, 261, 49, 51, 270, 264, 32, 50, 54, 273, 261 , 274, 280, 270, 272, 32, 55, 283, 55, 50, 261, 54, 267, 262, .....]

解凍 = [-119, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 17, 0, 0, 0, 16, 8, 6, 0, 0, 0, -16, 49, -108, 95, 0, 0, 0, 1, 115, 82, 71, 66, 0, -82, -50, 28, -23 , 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, -79, -113, 11, -4, 97, 5, 0, 0, 0, 32, 99, 72, ,. ……]

文字列の内容をバイト配列にコピーする方法を教えてください。ありがとうございました!

0 投票する
1 に答える
1787 参照

gis - gdal_rasterize を使用して LZW 圧縮 Tiff を作成する方法

シェープファイルgdal_rasterizeから TIFF を生成するために使用したいと考えています。通常は結果が大きいので、 LZW 圧縮オプション.shpを使用して圧縮したいと考えています。

私はコマンドでそうしようとしました

しかし、--config COMPRESS LZWオプションは何の効果もないようです。(結果は、オプションなしとまったく同じサイズになります。)

このオプションの使い方を誤解しているかもしれません。

0 投票する
2 に答える
416 参照

c - 大きなファイルの LZW エンコーディング

辞書ハッシュを使用する LZW エンコーディング アルゴリズムを構築しているため、既に辞書に格納されている単語を処理するのに十分な速さで到達できます。

このアルゴリズムは、小さなファイル (約数百のシンボル) で実行すると適切な結果が得られますが、大きなファイルでは (特に、異なるシンボルが少ないファイルで実行すると、パフォーマンスが最悪になります。 1 つの記号のみで構成されます (「y」としましょう)。ディクショナリがいっぱいに近づいていないときにクラッシュするという点で、最悪のパフォーマンスです。ただし、大きな入力ファイルが複数のシンボルで構成されている場合、ディクショナリはほぼ満杯 (約 90%) になりますが、再びクラッシュします。

私のアルゴリズムの構造を考えると、何が原因で一般的にクラッシュするのか、またはたった 1 つのシンボルの大きなファイルが与えられたときにすぐにクラッシュするのか、よくわかりません。ハッシュに関する何かに違いありません(初めて行うため、いくつかのバグがある可能性があります)。

私が使用しているハッシュ関数はここにあります。テストしたところ、良い結果が得られました: oat_hash

LZW エンコーディング アルゴリズムは、わずかな変更を加えたこのリンクに基づいており、辞書がいっぱいになるまで機能します: LZW エンコーダー

コードに入りましょう:

注: oat_hash が変更され、値 % CAPACITY が返されるため、すべてのインデックスは DICTIONARY から取得されます

}

0 投票する
2 に答える
8047 参照

java - 文字列を圧縮 (LZW など) する Java ライブラリ

Apache Commons Compress はアーカイブ ファイルでのみ動作します (間違っていたら訂正してください)。次のようなものが必要です

LZW は単なる例であり、似たようなものである可能性があります。ありがとうございました。