ToyViewer (Ver.3.2)


他の形式のファイルを表示するには

どんな画像ファイルでも ppm形式へのフィルタがあれば、ToyViewerで表示するように設定できます。このためには、以下の形式で "~/.toyviewerrc", あるいは "~/Library/ToyViewer/rc.arch" にフィルタの指定を記述しておきます。ここで、"arch"は m68k, i386, sparc, あるいは ppc のいずれかのアーキテクチャ名です。フィルタの実行ファイルの格納場所がアーキテクチャごとに異なる、あるいはあるアーキテクチャで動く実行ファイルしかないというような場合、アーキテクチャごとに指定の記述を違ったものにしておくことが可能です。例えば、Intelマシンで実行する場合のフィルタ指定はファイル rc.i386 に記述すればよいのです。
	<ext>	<path>	<args> ... 
ここで <ext> は画像ファイルの拡張子、 <path> はフィルタプログラムの絶対パス、 <args> には引数を指定します。引数のどれかは '$' でなければならず、これが読み込みたいファイル名に置き換えられます。<path> の先頭の '~' はホームディレクトリに、'@' は ToyViewer.app/Resources のパスに展開されます。また、行の先頭に '#' を置くとコメントとなります。以下に例を示します。
jfif  @/djpeg $
ras   /usr/local/netpbm/bin/rasttopnm $
sgi   /usr/local/netpbm/bin/sgitopnm $
g3    /usr/local/netpbm/bin/g3topbm -reversebits $
qwe   ~/Unix/bin/qwe2ppm $ -
この方法で指定した変換方法は、ToyViewer.appであらかじめ用意した表示方式に優先します。例えば、gifという拡張子についての指定をファイルに記述しておけば、その指定した方法で変換、表示されます。

また、ImageViewer.app, OmniImageFilter, McFilterなどのフィルタサービスを提供するプログラムがインストールされていれば、これらのプログラムの提供する形式(例えば Mac paint, sun rasterなど)のファイルもオープンできます。ただし、これらの中には正常に機能しないフィルタもありますので注意して下さい。

以上の方法で表示可能になった画像ファイルをオープンするには、メニューの「ファイル/オープン」から指定するか、画像ファイルのアイコンをToyViewer のアイコン上に Command-ドラッグ(Commandキーを押しながらドラッグ)&ドロップします。 アイコンをダブルクリックしても、ToyViewerは起動しませんので注意して下さい。

画像変換フィルタサービス

ToyViewer が ~/Apps や /LocalApps などの標準的なパスにインストールされていれば、画像変換フィルタサービスが受けられます。ToyViewer は、OPENSTEPはもちろん、NEXTSTEPのアプリケーションに対してもサービスを提供することが可能です。
例えば、Preview.appで gif形式、mag形式のファイルをオープンしたり、Edit.appや TextEdit.appの RTFの文書内にこれらの形式のファイルアイコンをドラッグ&ドロップすることができます(変換後の形式は tiffです)。

画像ファイルが壊れているなどの理由でサービスが失敗した場合、サービスを要求したアプリケーションにはエラーを示す小さな代用のイメージが返されます。

また、上記の方法で他の画像形式のフィルタプログラムを ToyViewer から使えるように設定した場合、これらの形式の画像もフィルタサービスから利用できるように設定できます。このためには、~/Library/Servicesに ToyViewer.service というファイルを作成します。
今、前項の例で追加した拡張子の画像ファイルに対してフィルタサービスが使えるようにするためには、ToyViewer.serviceに以下のように記述します。

Filter: convertToTIFF
Port: ToyViewer
Send Type: NXFilenamePboardType:jfif
Send Type: NXFilenamePboardType:ras
Send Type: NXFilenamePboardType:sgi
Send Type: NXFilenamePboardType:g3
Send Type: NXFilenamePboardType:qwe
Return Type: NXTIFFPboardType
Timeout: 60000
このファイルを作成した後、ToyViewer を起動しなおせば、フィルタサービスが利用できるようになります。
うまくサービスが機能しない場合は、make_services コマンドを Terminal から入力したり、ログインし直したりしてみて下さい。

あなたが研究のためにグレイスケールの生データを頻繁に使うと考えましょう。そのデータは 320x200ピクセルでヘッダ情報はなく、各バイトが1ピクセル(範囲は0-255)を表しています。拡張子は "gs" です。ToyViewerを使うと、このようなデータも容易に表示できます。
まず、以下のような実行可能なシェルスクリプトを作成します(ファイル名はgstoppm.sh)。このシンプルなスクリプトは、pgm形式への変換フィルタとして機能します。
#!/bin/sh
echo "P5 320 200 255"
cat $1
次に、"~/Library/ToyViewer/rc.arch" というファイルを編集して次の行を追加します。
gs      ~/Unix/sh/gstoppm.sh $
もし、"gs"イメージについてフィルタサービスも利用したいならば、"~/Library/Services/ToyViewer.service" を以下のように作成します。
Filter: convertToTIFF
Port: ToyViewer
Send Type: NXFilenamePboardType:gs
Return Type: NXTIFFPboardType
Executable: /LocalApps/ToyViewer.app/ToyViewer
Timeout: 60000
これで ToyViewer を起動しなおせば、"gs"ファイルをToyViewerで表示できるようになります。

注意

ToyViewer が提供している cjpeg, djpeg は、コメントが読み書きできるように改良されたプログラムです。他のプログラムで置き換えると正常に動作しなくなります。