[2005.10.5] ImageMagick の convert コマンドを使うと、サムネール付属の epsファイルでも jpeg ファイルに変換できることを知りました。これは便利です。 以下の話はもう不要になりましたが、記録のため、残しておきます。 ImageMagick については以下のサイトをご覧ください:

eps2jpg

イントロ

知人から

という質問を受けました。使用OSはWindows XPです。まず考えたのは IrfanView日本語版)。 これは色んな種類の画像をサムネール表示して一覧できるし、 ファイルタイプの一括変換も可能なはずです。 ところが調べてみると、サムネール表示可能なepsファイルは、 サムネール用の画像を先頭部分にtiff形式で貼り付けてあるもののみで、 そうでないものは画像で一覧表示できないことがわかりました。 またepsからjpegにも変換できません。

同様な悩みをもつ人はあるようで、 「人力検索サイトはてな」 に

EPSをサムネイル表示してプレビューできるツールのあるサイトってありませんか?tiffのプレビューがない EPSファイルが、大量に手元にあるような状況で、これを簡単にプレビューする方法を探しています。epsから一度jpgに変換するなどして、でもいいのですが、一発で解決できるツールのあるサイトってないでしょうか。
という質問が出ていました。 それに対する回答が こちらです。 ghostscriptがインストールしてあれば、 Gimpで、[拡張]->[ガッシュ]とメニューをたどって、 サムネール表示できるとのこと。これを試してみるのもよいかもしれません。

それとは別に、 GSview をインストールすれば、 epstool という epsファイルを操作するツールが自動的にインストールされるということがわかりました。 このリンクからepstoolだけでもダウンロード可能です。 epstoolを使うとプレビューイメージをつけたり、外したり、 サムネイル画像のみを取り出したりすることができます。 これでプレビューの方はなんとかなりそうです。

epsからjpegへの変換は、PhotoshopやPaint Shop Proが使えるのならそれで 一括変換が可能らしいです (なぜなにGACの記事)。

そういうソフトを持っていない場合は、やはりghostscriptに頼らざるを得ません。 検索するとeps2pngというPerlスクリプトが見つかりました:

これはghostscriptなどを用いてepsファイルをpng/gif/jpegに変換するツールです。 Windows用のghostscriptさえインストールしておけば、jpegに変換することが 可能です。ただし若干スクリプトに手を入れる必要があります。 その説明の前にまず、必要なghostscriptのインストールを先に済ませておきましょう。


ghostscriptのインストール

  1. まず奥村さんの TeX Wiki Windows用TeXインストール解説のページにいきます。
  2. TeX自身をインストールするわけではないので、最初の辺りはずっととばして、 「環境変数の設定」という項をみて下さい。 PATHという環境変数を設定します。説明にある C:\usr\local\bin は長すぎるので かわりに C:\bin を指定します。 これはGhostscript自身とは関係がありません。eps2jpgを動かすのに必要になります。
  3. 上で指定したフォルダを実際に作成しておきます。 Cドライブに binというフォルダを作成して下さい (すでにある時は、そのままで結構です)。
  4. 次に「Ghostscriptのインストール」と言うところをしっかり読みながら、 インストールします。
    dviout云々というところは読み飛ばして下さい。
    「dvipdfmx や dvipdfm で PDF を作る際には,C:\gs\gs7.07\bin にパスを通しておきます。」 に続く説明をよく読んで環境変数PATHに ;C:\gs\gs7.07\bin を追加します (番号はこれと異なるかも知れません)。 Ghostscriptに関してはこれで大丈夫でしょう。

Perlのインストール

  1. eps2png は Perlスクリプトです。実行するためには Perl をインストールする必要があります。
  2. Windows用のperlには、 ActiveStateのサイトで 配布されているActivePerlが あります。このリンク先の一番下部に Download というリンクがありますから、 そこからたどって下さい。 最新版と、安定版のふたつがありますから、好きな方のMSI版を選択するとよいでしょう。 日本語によるインストールガイド も参考になるでしょう。

eps2jpgのインストール

  1. eps2pngのページから、 eps2png をダウンロードして下さい。 [Download]をクリックすると圧縮されたものがダウンロードできます。 解凍できない方は[Browse]のほうから直接、scriptフォルダの中の eps2pngを表示し、 eps2jpg という名前で保存して下さい。 先ほど作成したbinフォルダに保存すると便利です。
  2. スクリプトが使用する ghostscript 実行ファイルが gs になっています。 170行目あたりに
        my $gs0 = "gs -q -dNOPAUSE -r$res -g${width}x$height";
    
    となっているのを
        my $gs0 = "gswin32c -q -dNOPAUSE -r$res -g${width}x$height";
    
    に修正してください。これがそのファイルです。

eps2jpgの試行

  1. eps2jpgを保存したフォルダにhandle.epsを保存してください。
  2. コマンドプロンプト(DOSプロンプト)を起動します。
    ([スタート]->[(すべての)プログラム]->[アクセサリ]->[コマンドプロンプト])
  3. 「>」の後ろに「cd C:\bin」と入力してエンターキーを押します。
  4. 表示が「C:\bin>」のようになります。
    perl eps2jpg -resolution 82 -verbose handle.eps と入力してエンターキーを押します。
      Producing jpg (jpeg) image.
      handle.eps: x0=71, y0=592, w=129, h=129, width=148, height=148
      Creating handle.jpg
    
    のように表示されれば成功です。handle.jpg が作成されているのを確認してください。

eps2jpg実行環境の整備

  1. 実は eps2jpg はプレビュー画像を持ったepsファイルを取り扱うことができません。 したがって、epstool を用いてあらかじめその部分を削除しておかなければいけません。
  2. epstoolのページ からzipファイルをダウンロードして適切なソフトで解凍してください。
  3. 解凍してできるフォルダの中にbinというフォルダがありその中にepstool.exeがあります。 これを C:\bin フォルダにコピーしてください。PATHが適切に設定してあれば、 どこからでも epstool が実行可能です。
  4. sample.eps というファイルのヘッダ部のプレビュー画像を取り除いた本体部分を抽出して body.eps という名前で保存するには
        epstool -p sample.eps body.eps
    
    のように実行します。ヘッダ部が無い場合はエラーを表示し、何もせず終了します。
  5. eps2jpg.bateps2jpgwrap.pl の2つのファイルを、C:\bin フォルダに 保存してください。
    eps2jpg.bat は次の eps2jpgwrap.pl スクリプトを実行するためのバッチファイルです:
        perl c:\bin\eps2jpgwrap.pl  %1
    
    eps2jpgwrap.pl は指定したファイルから(必要ならば) epstool を用いて 不要なヘッダ部分を取り除いた後に、eps2jpg を用いて jpeg ファイルを作成する スクリプトです。
        #!/usr/bin/perl
        
        $res = 82; ### as you like it
        $tmp_eps = "tmp.eps";
        if (-s $tmp_eps ) {
          unlink $tmp_eps;
        }
        my $eps_file;
        my $in_file;
        my @files = glob(@ARGV[0]);
        foreach $eps_file ( @files ) {
          if ( $eps_file =~ /^(.+).epsf?$/i ) {
            $out_file = "$1.jpg";
          }
          system("epstool --quiet -p $eps_file $tmp_eps");
          if ( -s $tmp_eps ) {
            $in_file = $tmp_eps;
          } else {
             $in_file = $eps_file;
          }
          system("perl c:\\bin\\eps2jpg -verbose -resolution $res -output $out_file $in_file");
          unlink $tmp_eps;
        }
    
    eps2jpg実行時の解像度は $res = 82; として 82 を指定しています。 これが不都合ならば適当な数値に書き換えてください。
  6. jpegに変換したいファイルを適当なフォルダにコピーし、コマンドプロンプトを開き、 cdコマンドを使ってそのフォルダに移動します。例えば C:\pics\tmp に移動するなら
        cd C:\pics\tmp
    
    と入力します。そして
        eps2jpg *.eps
    
    とすれば、変換が実行されます。このときオプションは指定できませんので、 必要ならば eps2jpgwrap.pl の中で指定しておいて下さい。