0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PNGからEPSへの変換方法

Posted at

はじめに

本記事では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形式に変換する方法について、

  1. convert hogehoge.png hogehoge.eps コマンドでPNGからEPSへの変換が可能
  2. 文句を言われたら/etc/ImageMagick-6/policy.xml を編集して必要な権限を付与する

という2つの手順にそって解説しました。

  1. 筆者はここで躓いたので、この記事を書くことにしました。

  2. VSCodeを管理者権限で開こうとしてうまくいかず、この時はじめてnanoを使いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?