33

文字列を膨らませるアルゴリズムのJavaScript実装を探しています。サーバー側(Java)で圧縮し、クライアント側(JavaScript)で解凍したい。

私が見つけた:

javascriptで文字列を解凍します。
その文字列は、別の問題に対する回答で回答済みとしてマークされます。他の答えも何か他のものです(ZIP形式でファイルを解凍します)。

JavaScript inflateの実装(おそらくFF 3.6のみ)
これは私が必要としているものに最も近いものです。しかし、私はいくつかの選択肢が欲しいです。

提案?
ありがとう、オンドラ

更新: 私にはかなり特定のユースケースがあります。「JavaScriptでそれをしないでください」と答えないでください。私は「オフライン」レポートツールを作成しています(生成されると、静的ストアに配置されます)。デフレーションを使用すると、1つのレポートでメガバイトを節約できます。他のアプリに制約されているため、zipファイルとして保存できません。

4

7 に答える 7

10

このStackOverflowの質問を見てください。そこにある回答には、JavaScriptで実装された複数の圧縮エンジンへの参照が含まれています。これらのほとんどはLZ77に基づいています。

于 2011-02-02T18:38:51.253 に答える
10

私はあなたがそれをどのように望んでいるかわかりませんが、私はこれらの実装が好きです:

1つ目は2つ目よりも高速です。通常、高速サーバーを確保できますが、クライアントマシンのパフォーマンスはわかりません。したがって、js-deflateを選択し、java(サーバー側)を調整して膨張させることをお勧めします。

https://github.com/dankogai/js-deflate

http://code.google.com/p/gzipjs/

于 2011-02-02T18:48:27.097 に答える
7

pakoモダンで高速なZlibポート を使用して、実用的な例を作成しました。http://jsfiddle.net/9yH7M/2/

于 2014-03-26T23:53:55.013 に答える
3

その一部としてjavascriptのzlib実装を備えたこのグラフ作成ライブラリがあります。このページを少し下にスクロールすると、別のダウンロードとして表示されます。 http://jsxgraph.uni-bayreuth.de/wp/download/

于 2011-09-26T14:33:24.253 に答える
2

この例:http ://cheeso.members.winisp.net/srcview.aspx?dir = js-unzip は、JavascriptでZIPファイルを作成する方法を示しています。さて、ZIPではなくZLIBまたはDEFLATE圧縮が必要なことはわかっています。ただし、ZIPはDEFLATEを使用し、その例の.jsファイル内には、読み取り時にINFLATEできるInflatingReaderクラスがあります。

クラスはこれらのメソッドを公開します:

readByte()
   returns null when EOF is reached, or the value of the byte when successful.

readToEnd()
   returns an array of all bytes read, to EOF

beginReadToEnd(callback)
   async version of the above

readBytes(n)
   returns an array of n bytes read from the source.

beginReadBytes(n, callback)
   async version of the above

INFLATEが必要な場合は、そのコードを変更せずに使用できます。

ZLIB (別名unzip)が必要な場合は、圧縮されたバイトを読み取ってINFLATEを実行する前に、読み取って検証する必要がある2バイトの署名があります。InflatingReaderを変更して2バイトを読み取り、ダンプするだけで、ZLIBは問題なく実行されます。

于 2011-02-03T00:34:45.193 に答える
2

私はここで機能する膨張の実装を見つけました:

http://www.onicos.com/staff/iz/amuse/javascript/expert/inflate.txt

アルゴリズムの名前空間を設定する少しクリーンなバージョンが必要な場合は、次のバージョンが機能するはずです。

https://github.com/augustl/js-inflate

gzipで圧縮された「インフレート」データには2バイトのヘッダーが接頭辞として付けられ、4バイトのチェックサムが接尾辞として付けられます。これはアルゴリズムに渡す前に削除する必要があります。

于 2011-02-24T21:35:27.247 に答える
-4

JavaScriptではそれを行わないでください。それは遅いでしょうし、それに加えて、JSはバイナリデータではうまくいきません。

サーバー側でgzip転送エンコーディングを使用するだけで、ブラウザが解凍を処理します。

于 2011-02-02T13:33:05.993 に答える