[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
2003/05/27 22:26 from Shinra
Title: GIF→BMP変換機能プロキシーの設定

以前も少し書きましたが、「DeleGateでGIF→BMP変換機能付きプロキシーを立ち上
げて、Browser Returnsで利用する」のを試しました。

その設定方法をまとめました。


===========================================================================
● プロキシーサーバの構成

  プロキシーサーバとして、DeleGateを使用しました。DeleGateはHTTP, FTP, NNTPな
ど様々なプロトコルのプロキシーとして機能します。UNIX, Windowsで動作します。今
回はFreeBSD上で使用しました。

  DeleGateの機能で今回特に重要なのは、クライアントとDeleGateの間にフィルタを
はさんで、簡単にデータの変換を実現できる点です。フィルタとしてGIF→BMP変換ツー
ルを使用することにより、今回の目的が達成できます。

  GIF→BMP変換ツールとしては、ImageMagickを使用しました。非常に多種のフォーマッ
トをサポートした、フォーマット変換、画像変換、画像加工ツールです。Windows, 
UNIXで動作します。今回は、ImageMagickを使用して、GIFから16色モノクロBMPへ変換
します。

● DeleGateの設定と起動

  ImageMagicをDeleGateのフィルタとして使用するわけですが、Browser Returnsと
Webサーバとの通信すべてをフィルタで変換するわけではなく、以下の場合に限定する
必要があります。

  1. DeleGateからクライアント(Browser Returns)に
  2. GIFを送信する場合

  DeleGateは、どこを流れるデータにフィルタを適用するのかを指定できます。
DeleGateからクライアントへのデータへフィルタを適用するには、DeleGateのFTOCLパ
ラメータ(Fileter TO CLientの意味だと思われます)でフィルタを設定します。

  GIFに限定してフィルタを適用するには、DeleGateのCFIを使用します。CFIを使用す
ると、HTTPのレスポンスヘッダを参照し、特定の文字列にマッチするヘッダがある場
合にのみフィルタを適用できます。WebサーバがGIFを返す時には、HTTPレスポンスに
以下のヘッダが含まれるため、

    Content-Type: image/gif

これがある場合のみフィルタが有効になるよう設定します。

  DeleGateを起動するシェルスクリプトは以下のようになります。
-------------------------------------------------------------
#!/bin/sh

imagemagick=/user/local/bin

/usr/local/sbin/delegated  -P8080 SERVER=http ADMIN=shinra@pc88.gr.jp FTOCL="tocl.cfi" LIBPATH=".:$imagemagick" PERMIT="http:*:*" RELAY="proxy,delegate" CACHE=no 
-------------------------------------------------------------
  この設定では、プロキシーのポートは8080です。imagemagickにはImageMagickのイ
ンストール先を指定します。フィルタの設定はファイルtocl.cfiに記述します。

  tocl.cfiの内容は以下の通りです。
-------------------------------------------------------------
#!cfi
Content-Type: image/gif
Filter: convert -scale +100% -colors 16 -colorspace gray +compress +matte - bmp:-
Output/Content-Type: image/bmp
-------------------------------------------------------------

  Filter: の行はフィルタとして実行するプログラムを指定します。convertは
ImageMagickの実行ファイルです。+100%の部分を+50%などにすると画像の縮小も可能
です。指定によってあるサイズ以上の場合のみ縮小というのも可能なようです。
  Content-Type: image/gif は、HTTPレスポンスにこのヘッダがあった場合にフィル
タを適用することを意味します。
  Output/Content-Type: image/bmp は、クライアントに送るHTTPレスポンスヘッダに
Content-Type: フィールドを出力することを指定します。元あったContent-Type:ヘッ
ダは置き換えられます。画像フォーマットがGIFからBMPに変換されたので、このよう
に設定してContent-Typeを書き換えるのが適切です。


● Browser Returns の設定

  BR98.INIに「GIF→BMP変換ソフトを呼び出すバッチ」を指定します。Browser 
Returns は URL の拡張子部分(.gif)でファイル形式を判断しています。プロキシー
サーバによって画像フォーマットは変換されますが、URLは元の.gifのままなので、
Browser Returns はGIFだと判断しバッチを呼び出します。

-------------------------------------------------------------
;↓GIF→BMP変換ソフトをお持ちの方は変換ソフトを呼び出すバッチファイルを
;指定してください。
gifbmp=~gifbmp2.bat
-------------------------------------------------------------

  ここで指定したgifbmp2.batの中身は
-------------------------------------------------------------
copy %1 %2.bmp
-------------------------------------------------------------
1行です。拡張子をBMPに変えてコピーするだけです。


● Browser Returns の起動

  一般には、プロキシーを利用するにはそのサーバ名をブラウザに設定する必要があ
りますが、DeleGateの場合、以下のような特別な形式のURLを使用することにより、ブ
ラウザの設定なしで使用できます。

    http://DeleGateのサーバ名:ポート番号/-_-WebページのURL

  DeleGateをproxy.foo.jpのポート8080で起動しており、http://www.yahoo.co.jp/
を閲覧したい場合は、次のように実行します。

-------------------------------------------------------------
BR98 http://proxy.foo.jp:8080/-_-http://www.yahoo.co.jp/
-------------------------------------------------------------

Yahoo! のロゴとともに、トップページが表示されるはずです。


● 使用したソフト

  Browser Returns: http://www.proc.org.tohoku.ac.jp/~asaka/soft/br98.shtml
  DeleGate: http://www.delegate.org
  ImageMagick: http://www.imagemagick.org

===========================================================================

[レスを書く]