問題タブ [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 投票する
2 に答える
2112 参照

c++ - LZ関数の使用法に関する不明確

注:この質問は、プレフィックスLZで始まるファイル管理関数であるWindows LZ関数に関するものです:LZOpenFile、LZCopy、LZCloseなど。Googleが間違っていない場合、これらはおそらくWindowsAPIの最も文書化されていない関数の1つです。 。

WindowsのLZ関数での使用に実際に適しているファイルの種類を見つけようとしています。公式ドキュメントには「Compress.exeを使用して圧縮されたデータ」と記載されていますが、関数は非圧縮ファイルも処理できます。この場合、解凍は適用されません。

ここで、リソースキットのcompress.exeユーティリティを使用してファイルを圧縮し(-Zまたは-ZXスイッチのいずれかを使用)、ここで説明する手順を使用して解凍すると、ソースファイルは変更されていないかのようになります。期待どおりに圧縮されませんでした。元のWindowsXPセットアップCD(i386フォルダの最後にアンダースコアが付いた名前のファイル)の圧縮ファイルを使用しても、同じ結果が得られます。結論:どのファイルを解凍しようとしても、変更せずに元に戻します。

私が使用しているコードは非常に単純で、基本的にはMSDNの記事で説明されている手順を再現しているため、バグがある場合は別の場所にあるはずです。しかし、私はまだ間違った入力ファイルを使用していると思う傾向があります。誰かがすでにそれらのLZ機能の経験がありますか?これがC++での私のコードです。

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

gif - GIF 画像デコードの理解 - Lempel-Ziv-Welch

GIF ファイルを別のファイル形式に変換するために使用できるコードを作成しようとしています (作成方法は既に知っています。[GIF から GRF (プリンター グラフィック ファイル形式) への変換を合理化しようとしています。])

ウィキペディア ( http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Image_coding ) からの情報に基づいて作業しています。

バイトから 9 ビット コードへの変換について説明するセクションがあります。それらが示す例は次のとおりです。

ファイルから右側にあるバイトを生成できます。(記事で説明されているとおりにファイルを作成しました (MSPaint で 0,0 と 1,1 に黒いピクセルがある 3x5)。

私が理解していないのは、これらのバイトを 9 ビットの 16 進コードに変換する方法です。

00 はどのようにして 100 になるのですか? バイナリのバー (|) は何を意味しますか?

0 投票する
5 に答える
6095 参照

algorithm - GIF ラスター データの解析 - LZW

私は PHP で GIF を解凍しようとしてきましたが、LZW 解凍以外はすべてダウンしているようです。表示されている画像を保存しました:サンプル画像

この画像は次のように 3 x 5 です。

Binary で手動で処理し、このファイルを解析することにしました。手動解析の結果は以下のとおりです。ここでラスターデータをデコードする方法については、まだ行き詰まっています。ラスター データがどのように画像になるかを説明できますか? 1 つの画像を分解できましたが、他には何もありません (この画像ではありません)。これがどのように崩壊するかについての私の理解を投稿しましたが、明らかに間違っています。

私の試み

初期コード サイズ = 3 一度に 2 ビットを読み取る

この時点で、私はすでに間違っています。最初の色は青にする必要があります。

私が使用しているリソース:

http://www.daubnet.com/en/file-format-gif http://en.wikipedia.org/wiki/Graphics_Interchange_Format http://www.w3.org/Graphics/GIF/spec-gif87.txt

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

c - Unicodeライブラリ全体を使用したLZW圧縮

私はこの問題を実行しようとしています:

可能なすべてのバイト値ではなく、Unicode文字セット全体の最初のアルファベットがあると仮定します。Unicode文字は符号なしの2バイト値であるため、非圧縮データの各2バイトが1つのシンボルとして扱われ、60,000を超えるシンボルのアルファベットが作成されることを思い出してください。(シンボルを一度に1バイトではなく2バイトのUnicodeとして扱うと、国際化されたテキストの場合の圧縮が向上します。)また、コードあたりのビット数を最大16に制限するものはありません。この非常に大きなアルファベットのLZWアルゴリズムを一般化します。かなり長いコードがある場合でも、心配する必要はありません。

これで、EODコードを含むプロジェクトの前提条件を使用し、4バイトのintにグループ化して、この4シンボルシーケンスの圧縮バージョンを提供します。(これらの3つの記号はUnicode値であり、数値で表されます。)回答は、小文字ではなく大文字の16進数を使用して、スペースで区切られた3つの8桁の16進値として記述してください。

32767 32768 32767 32768

私が抱えている問題は、アルファベットの全範囲がわからないことです。そのため、LZW圧縮を実行するときに、新しいコードのバイト値がわかりません。その問題から抜け出して、私もEODコードがどうなるかわかりません。

また、圧縮されたデータは2つの整数しか必要としないように思われます。

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

c - lzw 圧縮用の可変長文字列の配列

ここに関数自体があります。どうやら配列内のその値に文字列を割り当てることができないため、セグメンテーション違反が発生しています。clang/gcc の両方で警告が表示されます。Clangの方が少し優れています。これは、「char *の割り当てを期待する」です。私が試したすべてが機能していないため、その辞書を操作する他の方法はわかりません。また、すべてのヘルパー関数を含めるつもりですが、この関数自体にあると確信しています。

いつものように、私はうまくいく答えに賛成票を投じ、私が個人的に選んだものを受け入れます. とにかく、残りの「ヘルパー」機能を以下に投稿します。

ご覧のとおり、純粋な c で lzw のようなプログラムを実行しようとしています。私は常に-Wall -std=c99 でコンパイルします (プリプロセッサ マクロの悪用に p99.h を使用することがあるため)。しかし、何らかの理由で文字列の配列を機能させることができません。それに似たコードを使用したことは知っています(しかし、明らかにバックアップしていませんでした...)が、とにかくそうです。私はそれを(適切に)どのように行うべきかを理解できません。この問題について誰かの助けをいただければ幸いです。

通常どおり、ここに投稿するコードは、特に明記しない限りパブリック ドメインです。すべてが機能するようになったら、ここに投稿して、探している他の人も機能させることができるようにします。

最後に、このスレッドを読んでくれてありがとう。町に行って戻ってきたら(すでに回答がある場合)、チェック/マークを付けます。しかし、それで落胆しないでください。あなたのソリューションは、私が選んだソリューションよりも優れている可能性があり、それでも賛成票を獲得できるからです。

編集1:コードを以前のものに編集しました(gitによる)。

編集 2: 多くのことを修正し、見栄えを良くしました。それでも、配列比較関数は機能しません(何らかの奇妙な理由で)。

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

perl - 出力コードを使用したPERLLZW圧縮は9ビット長です

ページから: http ://www.verypdf.com/document/pdf-format-reference/pg_0072.htm

同じ詳細を使用して圧縮と解凍を試みていますが、perlモジュール(LZW)が機能していません

LZW圧縮を行うperlスクリプトを作成したい

コード:

私は他のモジュールを使用しましたが、上記のコードは単なる例です。しかし、それでも私は正しい出力を得ていません

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

c - LZ圧縮技術

私はLZ圧縮を実装しようとしていました....そしてそれを使用していくつかのファイルを圧縮しようとしていました....しかし、論理的な問題が発生しています...データをどのように保存するかについて真剣に考えていませんファイルに戻る...本当の問題は次のとおりです。一致する文字列「ls」を取得したとします[テーブルのエントリは289番目のインデックスで既に行われています]ファイルで289をlsに置き換えると、どうすればよいですか? ? 以前の "ls" が 2 バイトだった場合、289 は 3 バイトになるためです。上記が当てはまる場合、なぜこの方法が圧縮と呼ばれるのか、そうでない場合は何が正しい方法になるのか...このロジックについて特に詳細に説明する答えが必要です。

私が今まで作ったいくつかのコード:

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

javascript - javascript lzw圧縮用の文字辞書、「only-use-these-chars」-文字列

読者とヘルパーの皆さん、こんにちは。最近見つけたjavascript関数を利用したいと思います。そのLZWは文字列を圧縮します。

この関数は実際には非常にうまく機能しています。唯一の問題は、エンコードされた文字列をWebSocket経由で、追加のエンコード(base64など)なしで転送したいのですが、毎回機能するわけではありません。圧縮された文字列にWebSocket経由で転送できない文字が含まれている場合があり、文字列に不正な文字が含まれているというjavascriptエラーがスローされます。したがって、私の考えは、圧縮に使用する必要がある文字の「ホワイトリスト」のように、エンコードプロセスで受け入れ可能な文字のみを使用することでした。私がコードから理解したことは、それがいくつかの数のcharCodeを取得することです。したがって、私は自分のcharCodeSetを作成することはできましたが、それを実装する方法と、それが機能するかどうかさえ本当にわかりません。

  • Q1:lzwエンコーディングで定義した文字列の文字を使用するために何ができますか?
  • Q2:WebSocketが転送したくないこれらの中国語、アラビア語、および制御文字を「http / s」で転送するには、他にどのような方法がありますか?

ちなみに、これはChromeがスローしているエラーです:

Update1:​​ただし、デコード機能も表示されている場合は役立つ可能性があります

ここでは、カスタム文字セットも実装する必要があると思いますか?..

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

matlab - matlabのLZWどうすれば画像をLZWアルゴリズムに入れることができますか

事前に助けていただきありがとうございます。私の質問は、Matlab で LZW 圧縮を行っていることです。選択ダイアログ ボックスから画像を選択し、その後imreadコマンドで画像を読み取ります。持っているのはLZWアルゴリズムですが、画像をそのアルゴリズムに参照する方法です。これは私の試みであり、imreadLZW_Encodingアルゴリズムに到達するために何を入れるべきか、圧縮後にデータを保存するにはどうすればよいかという問題の後に間違っています

よろしくワドゥ

LZW_Encoding はオープン ソース関数であり、私の問題は LZW 関数ではなく、画像を参照する方法と、エンコードされたテキスト ファイルを書き込む方法です。

http://www.mathworks.com/matlabcentral/fileexchange/4899-lzw-compression-algorithm/content/norm2lzw.m