はじめに
本記事ではpng画像をeps形式に手軽に変換するための手法について記します。このような変換が必要な理由として
- platex → dvips のワークフローでは PNG や JPEG は直接扱えず、「Cannot determine size of graphic in ~ (no BoundingBox)」というエラーが発生するが、epsファイルならコンパイルが通ること
- 論文を書くときに用いる図はepsファイルであることが多いこと
が挙げられます。
以下のtipsでは、pngを一つの要素としてしまうのでベクターのありがたみはなくなりますが、例えばレポートの体裁を整えるのに役立つでしょう。ただし論文に掲載する図としてpngを直接epsファイルにしたものを用いるのは好ましくない可能性があります。筆者はこの事情に詳しくありませんが、少なくとも直接ベクターファイルを作ってepsにするよう教育されました。分野ごとに文化が違う可能性もあるので専門家にルールを相談するべきです。
変換方法
PNG画像をEPS形式に変換する場合、ImageMagickのconvert
コマンドを実行することで変換が可能です。
convert hogehoge.png hogehoge.eps
もしコマンド実行時にエラーが発生する場合、ImageMagickのセキュリティポリシーが原因に挙げられます1。特にImageMagick 6 系の場合、以下の設定ファイルを編集する必要があります。
/etc/ImageMagick-6/policy.xml
各々の環境でファイルの在処が違うかもしれないので、各自確認してください。ファイル内でEPSに対する権限を確認し、必要に応じて変更します。
policy.xml の編集
1. ファイルの場所
Debian/Ubuntu では /etc/ImageMagick-6/policy.xml
などに配置されているはずですが、環境に応じて適切なパスを参照してください。
2. 該当行の確認
以下のような行があるはずです:
<policy domain="coder" rights="read|write" pattern="PDF" />
<policy domain="coder" rights="read|write" pattern="PS" />
<policy domain="coder" rights="read|write" pattern="EPS" />
3. コメントアウト:
nano などのエディタで管理者権限で開き2、該当行を以下のようにコメントアウトします。
<!-- <policy domain="coder" rights="none" pattern="EPS" /> -->
4. 保存後、変換を再試行:
convert example1.png example1.eps
を実行し、問題なくepsが出力されることを確認してください。
まとめ
本記事ではpng画像をeps形式に変換する方法について、
-
convert hogehoge.png hogehoge.eps
コマンドでPNGからEPSへの変換が可能 - 文句を言われたら
/etc/ImageMagick-6/policy.xml
を編集して必要な権限を付与する
という2つの手順にそって解説しました。