圧縮・復元 相談室

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
NGNG
アルゴリズムは別スレで
201デフォルトの名無しさん
垢版 |
NGNG
>>198

> 標準的な ZIP ファイル形式および GZIP ファイル形式を読み取ったり、書き出したりするためのクラスを提供します。

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/zip/package-summary.html
202じんばん
垢版 |
NGNG
そこはおとずれました。サンプルプログラムを教えてください。
203じんばん
垢版 |
NGNG
見つけた。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5688&forum=12
NGNG
マルチメディアのファイルフォーマットを作成中なのですが
ストリーミングに向いた、圧縮方法を教えてください。
NGNG
>>204
うぐっ!
書き損ねた。>>204は携帯電話によく搭載されてるSMAFみたいな
奴を考えてます。
NGNG
ストリーミングと圧縮はあまり関係ないんじゃないのか?
あえて言うなら、ストリーミングにはデータ欠損が付き物なので
データが足りなくても質を下げて再生できるようなフォーマットが必要だろう。
最初の数パケットで数フレーム分を荒く再生できるとか。
NGNG
>>206
すると、圧縮しないほうがいいってことでしょうか?
NGNG
いや、そういう意味ではなくて、ストリーミングに適しているかどうかは
アルゴリズムよりも実装の問題だという事。
圧縮は当然する。
しないと送受信が間に合わないでしょ。

といっても具体的に知っている訳じゃないので一般論でしかないけどね。
とりあえずmpegとか調べてみては如何かな?
NGNG
>>204
「携帯 ムービー フォーマット」でググればそれらしい形式が出てくるんだから
更にそれらのフォーマットを調べれば済むんじゃないかなぁ。
210デフォルトの名無しさん
垢版 |
NGNG
質問です。
backup[1]という名前のフォルダの中に次のようなファイルが入っているとします。
 regcopy.exe
 help.chm
 online.htm
 readme.txt
別のbackup[2]というフォルダの中にもbackup[1]と全く同じファイルが入っているとします。

このbackup[1]とbackup[2]のフォルダをそれぞれLZH形式に圧縮します。
圧縮したこれら2つのファイルのバイナリを比較したところバイナリが一致しません。
上記4つの各ファイルのバイナリは一致しているのに、なぜ圧縮すると圧縮ファイルのバイナリが一致しなくなるのでしょうか?

宜しくお願いします。m(゚д゚)m
NGNG
釣りか?
フォルダごと圧縮してるなら、フォルダの名前が違うから。
212210
垢版 |
NGNG
>>211
いや、最初はそれが原因かと思ったので、フォルダ名を同じにして圧縮してみたんですが、
やはりバイナリが一致しないんですよ。
どうやら、フォルダ名はバイナリに反映されないようですね。

今度はZIP形式に圧縮し直して試してみたんですが、やはりバイナリが一致しません。
うーん、、何故?なぜなんだろう。。
NGNG
フォルダのタイムスタンプが違うんだろ。たぶん。
タイムスタンプも統一(偽造)してやってみて。
214210
垢版 |
NGNG
>>213
レスありがとうございます。
タイムスタンプは一致させているんですが、やはりバイナリが一致しません。
どうやら、ファイルの圧縮順が違ってみたいです。

例えば、backup[1]では、
regcopy.exe→help.chm→online.htm→readme.txt
のような順で圧縮処理しているのに対し、backup[2]では、
help.chm→online.htm→readme.txt→regcopy.exe
のような順で圧縮処理しているようなのです。

つまり、圧縮書庫内に格納されているファイル順が異なるため、バイナリが一致しないようなのです。
そこで、フォルダ内のファイルを名前順で並べかえてから圧縮したのですが、圧縮順は変わらないままです。

何か良い方法はないものでしょうか?
OS:WinME
アーカイバ:Easy圧縮
NGNG
ファイルの列挙順はファイルシステムに依存するから、
それを制御するのはWindowsでは難しいだろうな。

ところで個人的には「どうしてそうしたいのか」が不明なんだが。
216210
垢版 |
NGNG
>>215
なるほど、やはりファイルシステム依存でしたか。
アーカイバ側の設定で名前順でソートしたらバイナリ一致確認できました。

>ところで個人的には「どうしてそうしたいのか」が不明なんだが。
書庫内の格納順が名前順になってないと、解凍後に名前順に並べ替えないといけないんですよ。
これって気になりませんか?
NGNG
いや別に並び順なんてのは表示の問題であって
内部処理がどうなってようが気にならんがね。
実際FATだかNTFSだかがどんな順番で格納してるかなんか
気にしてないだろ? もちろんファイラで一覧表示するときは
なんかの基準でソートされてないと見づらいけどね。

アーカイブも同じだと思う。実際にどの順で格納されてようが
別に気にならないな。中に何が入ってるか表示するときに
ソートすればいいだけの話だから。
NGNG
>>216
勝手に並べ替えされると「あぁ、名前順に格納されてるのか」とか考えるバカが出るような気もするが。
219デフォルトの名無しさん
垢版 |
NGNG
ファイルを圧縮するんじゃなくてメモリ内のデータをファイル名を指定して直接
LZH圧縮ファイルに出力したいんだけどやっぱハフマン法とか勉強しなきゃできないん?
NGNG
>>219
zlibならそういう使い方もできるんだが、LHAでは聞いたことないな。
LHAという縛りがあるなら勉強してクローン作るしかないかもしらん。
LHAじゃなくても良くて単に圧縮したいだけならzlibが使えると思う。
221デフォルトの名無しさん
垢版 |
NGNG
>>220
レスサンクス
LZH圧縮しる!っていわれてるんで参考書でも買ってきて勉強しマフ
NGNG
>>219
unlha32.dll で UnlhaCompressMem とか使えばできなかったっけ?
223デフォルトの名無しさん
垢版 |
NGNG
>>222
情報サンクス
ちょっと試してみますた
メモリ圧縮は可能だけど解凍ソフトで解凍してもファイルが出来ないよ・・orz
やはり自作しるしかないのか・・はぁ・・
224223
垢版 |
NGNG
出来ないと思ってたのは自分のミスですた・・・
これでデータ長がDWORDの設定範囲を超えるデータを
1ファイルにまとめることが可能なら・・・これで十分いけそうでつ
>>220さん
>>222さん
ありがたう!
225デフォルトの名無しさん
垢版 |
NGNG
自動解凍のプログラムを作るのに参考になるページはありませんか?
解凍後にいろいろ処理をしたいのですが、既存のをそのまま使うのは
無理そうなんです。
解凍後に指定のEXEファイルを実行、というのでは解凍中のエラー時の
処理などがカスタマイズできないので使えないんです。
NGNG
>>225
makeとかantとかを強制させるとか
NGNG
>>225
installshield(?)を参考にしる
NGNG
>>225
プログラムの参考にはならないだろうが、
DGCAが、自動解凍後に任意のプログラムを実行する機能を持っている。
NGNG
>>228
そんなんlhaだって持ってるぞ。
っつーか普通は持ってるんじゃないか?
NGNG
>>229
% lha --version
lha for unix version 1.14g
% lha
...
LHa for UNIX V 1.14i Modified 2000 Tsugio Okamoto

ごめん。よくわかんない。
DOS版にはそういう機能があるの???
NGNG
>>230
そもそもunix版では自己解凍書庫つくれんだろーが。
NGNG
>>230-231
sharの仕組みを導入して何でも自己解凍化してしまえばok
233デフォルトの名無しさん
垢版 |
NGNG
 
234デフォルトの名無しさん
垢版 |
NGNG
NGNG
既存圧縮アルゴリズムを上回る圧縮率を開発できれば食いっパくれないんだろうなぁ
NGNG
たかだか 1%程度改善できても誰もよろこばんと思われ。
NGNG
開発しただけではどうだかな。その後のマーケティング次第でなんとでも。
それに圧縮率だけなら既存のでもシャノン限界に肉薄しているのがあるし、
圧縮速度やメモリ効率や使い勝手も優れてないとこれから普及するのは難しい。
238デフォルトの名無しさん
垢版 |
NGNG
いま,バッファにあるデータを
圧縮したり,展開したりする必要があるんだが,
統合アーカイバプロジェクトにあるような
圧縮展開ライブラリは「ことごとく」,
ファイルから入れて,ファイルに出すような,
API しか用意していない.

バッファで使えるようなライブラリ知らない?
NGNG
>>238
少なくとも unlha32.dll と unzip32.dll はメモリから圧縮、解凍できるが。
っつか、>>222 で既出。
240デフォルトの名無しさん
垢版 |
NGNG
>>239

lnlha32.dll では圧縮したデータを直接バッファに
出すことはできない

unzip32.dll では圧縮そのものができない
NGNG
だとすると素直にzlib使う感じかなぁ。
NGNG
すいません。馬鹿な質問かも知れませんが圧縮ってどうやってやるんですか?
例えばバイナリは1バイトで必ず0〜255の値しか取らないじゃないですか。
それを圧縮したら戻らなくなっちゃう気がするんですけど…
NGNG
>>242
まずはこの辺読めば?
ttp://homepage1.nifty.com/snap/room03/c02/comp/comp.html
NGNG
>>240
それなら、バッファにあるデータをバッファに圧縮、展開と書かないと分からないよ。

展開はともかく、圧縮データをバッファに吐くのは
圧縮できなくてデータが増える事も考慮すると、ちと面倒くさいね。
NGNG
要するに可逆圧縮は連続データがなければ圧縮というよりファイルサイズが増えるってことですかね…
なんとなくわかりました。ありがとうございます。
NGNG
>>245
ほとんどわかってないぞお前。
NGNG
>>243
そこはLZ78符号 ≒ LZ77符号 >> 算術符号 > ハフマン符号 >> 連長符号
みたいな比較をしていて解説としてはちょっとおかしいぞ。
LZ符号と算術・ハフマン符号を比較するのは無理がある。
248デフォルトの名無しさん
垢版 |
NGNG
>>244
> 展開はともかく、圧縮データをバッファに吐くのは
> 圧縮できなくてデータが増える事も考慮すると、ちと面倒くさいね

ん? 意味わからん
ちぢまない最悪のケースを考慮して,
バッファを用意させればいいだけの話じゃないか
NGNG
>>248
最悪のケースを調べるのが面倒くさいって事。

deflate でやるなら deflate のフォーマットを調べないと最悪のケースはわからん。
適当にやると不具合が出たときに泣きを見ることになる。
NGNG
GCAってのはどれだけ優秀なの?
解凍速度優先型らしいけど、ホントにゲームに使ってる方いらっしゃる?
NGNG
たとえばランレングス法とかのように("aaabbc" => "a3b2")
日本語を含む文字列(char型の配列)を圧縮して、
出力がバイナリでない圧縮方法はないですか?
ランレングス法は通常のテキストだとあんまり意味がないもんで。
NGNG
>>251
そんな特異な圧縮方法はありそうにない。
ってか、ほとんど仕様が決まってるじゃん。自前で用意しる!
NGNG
>>251
君は>>242だな?

>出力がバイナリでない
意味が良く分からん。
もう少し圧縮について勉強しなさいな。
NGNG
失礼いたします。
LHAやzlibでの、LZ系の高速化手法について詳しく述べられている
サイトってございませんでしょうか?
NGNG
>>254
サイトは知らないが、論文はいくつかある。
NGNG
>>254
ランペル・ジブ系一般に対する高速化の手法ではなくて、
LHAやzlibが採用してる手法について知りたいってこと?

後者なら、LHAについては1970〜80年台の古い雑誌に解説記事が載ってたな。
zlibはソース見るのが早いかも。いずれにしても、奥村先生のとこの記述がとっかかりになるはず。
ttp://oku.edu.mie-u.ac.jp/~okumura/map.html

前者だと、論文とか特許文書あたりの範疇になるのかな。これはさすがによくわかんね。
NGNG
教えて頂いてどうもありがとうございます。

>>256
後者の方です。
NGNG
gzip.dll用のCのヘッダーファイルが存在するのかどうか、
どなたかご存知でしたら教えてください。
当方VC6.0で圧縮モジュールを作成したいと考えています。
259デフォルトの名無しさん
垢版 |
NGNG
 
NGNG
>>258
http://www.gzip.org/
NGNG
人生に密着した、圧縮と解凍。
ttp://www.newforeskin.biz/CI/CIchart.htm
NGNG
LZとかその他の理論を基本的な手法を解説した本ってあまりないよね
なので、見つけたら即買ってしまう・・・
NGNG
「LHAとZIP」つー、マンマの本はどうなのかな。
オレは読んだこと無いけど(苦笑)。
Cが読めるなら、理解できるんじゃないかな。
オレはCを読めないので本当のトコは知らないけど(苦笑)。

アルゴリズムだけなら、上の本の作者の若い片割れの
ウェブサイトに、基本的にトコがカンタンに載ってるよ。
オレはそこ読んでLZSS+ハフマンのアーカイバを作った。
NGNG
>>262
理論を解説した文書が欲しければ論文を読むか、情報理論の教科書を探せ
手法を解説した文書ともども、amazonで買える

そもそもの大問題として、LZそのものの理論解析が実はあまり進んでいないという
確率推定問題に置き換えての証明やらは腐るほどあるが、派生手法に適用が困難
NGNG
gzipの解凍と圧縮の仕方を知りたい。
NGNG
>>265
ソースプログラムを読もう
アルゴリズムを知りたければRFCを読めばおk
NGNG
LZMAをマイナーOS環境にポーティングしようと思ったら、LZMA SDKの
コードそのままでメークできてしまった。色々いじって楽しもうと思ったのになあ・・・。
268デフォルトの名無しさん
垢版 |
NGNG
zip32.dllをダウンロードする場所を教えてください
NGNG
>>268
googleで検索することをオススメします
270デフォルトの名無しさん
垢版 |
NGNG
いいから直アド教えれこのくずが
NGNG
  _, ._
( ゚ Д゚)
272デフォルトの名無しさん
垢版 |
NGNG
ごめん・・・
もうゲットしちゃった(*´д`*)
NGNG
(゚д゚)
NGNG
>>270
氏ね
275デフォルトの名無しさん
垢版 |
NGNG
lzw圧縮ってもう使ってもいいんだよね?
あとでまた特許云々…とかなったりしないよね?
NGNG
> lzw圧縮ってもう使ってもいいんだよね?
Unisysが持ってた特許は失効した。

> あとでまた特許云々…とかなったりしないよね?
可能性はある。
実際に Unisys が関連特許で gif からライセンス料を徴収を続けるかも、って記事もあったし。
277275
垢版 |
NGNG
>実際に Unisys が関連特許で gif からライセンス料を徴収を続けるかも、って記事もあったし。
マジですか('A`)
携帯アプリのデータ圧縮に使おうと思ってたんだけど、やめといたほうがいいのかな…。
NGNG
>>277
>>276 は脅しただけだと思うが。
まぁ、油断はしない方がいいやね。

lzwってsuffix treeが必要になるから携帯でやるとメモリきつくない?
NGNG
各ノードの前後のインデックスを保持するだけだからそんなにメモリ使わないと思う。
NGNG
前後のインデックスってわかんないや。
親ノードのインデックスだったらわかるけど。
最近勉強してなかったからなぁ。
NGNG
ああ、親子のインデックスって言った方がよかったか。
lzwなら、親ノードのインデックスと1字のデータ(ある意味、子ノードのインデックス)ってことだよ。
NGNG
>>277
>>276 が言ってるのと同じかはしらんけど、こんなん見つけた。

http://pcweb.mycom.co.jp/news/2004/06/21/001.html
> 現在、米UnisysはLZWの技術に関連する2件の特許を出願中であり、
> 近い将来において特許成立が見込まれると発表している。
> 画像フォーマットとの関係は不明だが、その内容次第では
> 今回解決に至ったGIF問題の再発も懸念される。
283275
垢版 |
NGNG
まあ特許切れてる間に発表すれば後で公開停止求められることはないと思うけど、
作ってる間に関連特許取られたら怖いなー。後々使いまわす予定のコードだし。
短いコードで圧縮率高いから使いたかったんだけど…lzw以外でそういう圧縮方法ってないよね?
NGNG
lzss もハッシュテーブルと連結リストだけでできるっしょ。
こっちも特許ヤバそうだけど。
285281
垢版 |
NGNG
ごめん、今更だが子のインデックスって言い方はまずかった。
要は、辞書X番の情報は「辞書Y番の子である」と「その後ろにつく1文字」ということなんで、
ノードの持つデータと親のインデックスだけでいいんだな。
286デフォルトの名無しさん
垢版 |
NGNG
cabinet SDK(cabinet.dll)のAPIが日本語で説明されてるサイトってありませんか?
NGNG
大阪(西梅田)、新宿(JR駅前)のそれぞれ一等地に
拠点を構え、業績急上昇中!未経験者大募集中!の
ソフトウェア開発会社
グリーンシステムを応援するHPです。
http://www.geocities.jp/grs_hp/

応援するスレはこちら!
http://school4.2ch.net/test/read.cgi/job/1077432387/

最高の会社にするため、みんな頑張ってます!
NGNG
高速ブラウザ「Opera」、SlipStreamの圧縮技術でさらに加速
http://pcweb.mycom.co.jp/news/2004/11/06/100.html

の記事で、
「SlipStreamが開発したWebやEメールのアクセラレーション技術である。同社独自のデータ圧縮アルゴリズム」
とあるけど、
またまた、何かのパクリなのか? 

こういう紛いもんみたいな新技術の話って、よくもまあホイホイ出てくるよなぁ。
289デフォルトの名無しさん
垢版 |
NGNG
教えてください。私目のバカ脳では、限界です。
JavaのZGIPOutputStreamクラスでgzip形式で圧縮が可能なのですが、

同じファイルでも、プログラムで圧縮プログラムを実行するたびに、
出力された圧縮ファイルが異なります。サイズも中身もです。
解凍すれば、同じデータであるので、別に良いのですが、
会社で資産管理作業を行う際に面倒です。
そもそも、gzipや他の名のある圧縮アルゴリズムの
仕様なのでしょうか?
NGNG
>>289
適当な圧縮ソフトで実験してみれば?
NGNG
拡張子fcdってどうやって復元するの?
サイズ400メガ
NGNG
>>291
とりあえず吊っとく?
NGNG
FCD・・わからん
吊っとく・・わからん
NGNG
割れだろ?放置推奨
NGNG
圧縮ソフトを作りたくて圧縮技術に関する本をamazonで検索しています。

http://www.amazon.co.jp/exec/obidos/ASIN/4797325526/ref=pd_bxgy_img_2/249-1522108-5041925
圧縮アルゴリズム―符号化の原理とC言語による実装 C magazine
↑は購入を決めたのですが、他にお勧めの本はありますか?

できればプログラムのソースの解説については少なくて
アルゴリズムの解説に重みを置いている本を読みたいのです。

上記の本は知人から見せてもらって
自分のそばに置こうと考えたので購入することにしました。
NGNG
ttp://www.amazon.co.jp/exec/obidos/ASIN/4798005606/ref=pd_sim_dp_2/249-1522108-5041925
図解入門 よくわかる最新データ圧縮技術の基本と仕組み
―情報圧縮技術とアルゴリズムの基礎講座
How‐nual Visual Guide Book

こちらも候補に入れております。
297デフォルトの名無しさん
垢版 |
NGNG
保守
NGNG
あとはこれ。
「LHAとZIP―圧縮アルゴリズム×プログラミング入門」
http://www.amazon.co.jp/exec/obidos/ASIN/4797324287/
NGNG
>>298
その本は 1/3 が LHA の作者の一人の奥村氏による昔話とアルゴリズム解説、
2/3 が DeepFreezer作者による LHA の独自実装のソースと解説。
ついでに ZIP も実装できちゃいましたって感じの本だよ。
アルゴリズムの解説が読みたいっていう >>295 にオススメできるような本じゃない。

仕様を網羅してるか、という点で見ても LHA も ZIP も中途半端だし。
NGNG
そうだねぇ。私も買ったけど、仕様がどうこうって本ではないですね。
圧縮アルゴリズムのさわりと、プログラミングの入門って感じの本でした。
ていうか、サブタイトルがそのまんまなんで、タイトル通りの本ってことだけど。
301295
垢版 |
NGNG
図解入門 よくわかる最新データ圧縮技術の基本と仕組み
―情報圧縮技術とアルゴリズムの基礎講座
How‐nual Visual Guide Book

圧縮アルゴリズム―符号化の原理とC言語による実装 C magazine

上二つの本を購入することにしました。
みなさんありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています