第二系統用何故画像之秘密
WhyPic for OS/2 Warp


WhyPic とは

WhyPic は葉山の友人の可逆圧縮狂 山地 治氏が作成してしまった画像圧縮ツールです。その特徴として、次のような点があげられます。 オリジナル WhyPic は

http://www-lab25.kuee.kyoto-u.ac.jp/member/yamaji/freesoft.html

にて、Windows95版、FreeBSD版が公開されています。

今回、山地氏の許可を得て、この OS/2 版を公開させていただきます。 本パッケージは対 BMP形式コンバーターのみです。 PMで直接閲覧するには、 Sofiyaさんが画像ビューア「水」のプラグインとしてサポートされてますので、そちらをご利用ください。
(現在は 1.1 までですが… 1.2 の方よろしくお願いします > Sofiyaさん ;-)

ダウンロード

WhyPic 1.2 for OS/2 R2 ypc12os2r2.lzh (113,990 bytes)
WhyPic 1.1 for OS/2 R2 ypc11os2r2.lzh (85,401 bytes)
1.2 は圧縮率は変わりませんが、圧縮速度がかなり改善されています。

1.2 for OS/2 のリリースが遅れた言い訳

オリジナルの方では、FreeBSD-gcc と Windows-Visual C++ での浮動小数点の扱いが違う為、gcc 版の方で、FPU のレジスタを変更する処理が山地氏によって加えられました。 これによって、FreeBSD-gcc版と VC++版で全く同じ処理をするようになりました。

ところが OS/2-emx/gcc では、解凍に失敗する画像が多数発生しました。 その上、不思議なことに標準エラー出力をリダイレクトすると、 その不具合が消えてしまうのです。

いろいろ、考えましたが、どうも、OS/2 あるいは emx/gcc では、 画面出力を行うとFPUのレジスタが初期化されてしまうと解釈するしかなさそうです。 そうであるならば、プログラムの前の方と後の方で同じ計算の結果が変わってしまって、ベリファイ/解凍結果に不整合が起きるのも無理はありません。

これに対し、WhyPic のアルゴリズム自体、さっぱり分からない私は、結局、 画面出力の度に、FPUのレジスタを再設定するというベタベタな手法で回避しました。 20個ばかりの画像でテストしたところ、生成ファイルもWindows版と一致しましたので、おそらく互換性も問題無いと思われます。

遅ればせながら、ここに再公開させていただきます。 御協力いただきました、原作者の山地氏、汎用画像ビューア「水」の作者 Sofiya 様にこの場を借りて、お礼申し上げます。m(__)m

(余談)
 これで、WhyPic は、Windows , FreeBSD , OS/2 Warp という3プラットフォーム に対応したことになる(djgpp の DOS版もありましたっけ? >山地氏)。 しかし、これが最後であろうか? とても僕はそう思えない。 きっと、将来、WhyPic for Linux 、WhyPic for BeOS、 WhyPic for Netscape Navigator などが現れるに違いない。 その時、我々はいったいどうすればいいのだろうか。

WhyPic のワ行上一段活用

WhyPic の使い道としては、山地氏御自身がおっしゃっているように の他に などの使い方ができるでしょう。 さぁ、貴方も WhyPic で貴重な時間を無駄にして、時の涙を見てみませんか?
やっぱり帰る…