convert (imagemagick) メモ

様々なオプションがあり,機能も豊富で網羅はできない.
用途ごとに整理して並べる.

画像の結合

  • 水平結合
    convert +append image_1.png image_2.png out.png
  • 垂直結合
    convert -append image_1.png image_2.png out.png

画像(PDF)の回転

90度回転するときは

convert -rotate 90 image_org.png image_rot.png

mogrifyを使うと,元のファイルに上書きされる.

mogrify -rotate 90 image.png

画像をpdfに変換

  • 1ページ当たり1枚の画像
    image_1.png〜image_N.png(Nは自然数)とナンバリングされた画像をpdfに変換すると想定.
    下記は一例.
    convert image_*.png -geometry 50% -page A4+3+15 out.pdf
    使ったり使わなかったりするオプション
    -geometry: 拡大縮小の比,-resizeと一緒には使わない.
    -resize: 500x500のように貼る画像のサイズを設定できる.自由は利くけどだるい.
    -page: ページサイズ,A4 のようにもできるし,595x842とかでもOK.普通はA4.
           A4+X+Yとすると,横に+X(右にXピクセル),縦に+Y(上にYピクセル)左下端からずらして画像を配置する.
           -pageオプションがない場合,ページのサイズは-geometryや-resizeに依存する.
  • 1ページ当たりn枚(複数枚)の画像
    montageでもできるが画質の調整が面倒だった.
    1ページに1枚ずつ出力後,pdfnupを使う方が簡単.
    convert image_*.png tmp.pdf
    pdfnup --nup 2x3 --no-landscape --paper a4paper --outfile out.pdf tmp.pdf
    上記はtmp.pdfをconvertで作成し,そのページを2x3(横x縦)で配置して新たなA4サイズのout.pdfを作成する.
    convertの時に--pageオプションを指定しA4にしてしまうと,画像によっては無駄な余白ができるため,pdfnupでA4の指定をする.
    pdfupを使うにはplatexが必要.

エラー対処メモ

convertを使おうとしたら not authorized というエラーが出た.

$ convert -density 300 eta000.eps eta000.png
convert-im6.q16: not authorized `eta000.eps' @ error/constitute.c/ReadImage/412.
convert-im6.q16: no images defined `eta000.png' @ error/convert.c/ConvertImageCommand/3258.

使用していたバージョンは以下の通り.OSはUbuntu 18.04LTS.

$ convert -version
Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP 
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlib

stack overflowを参考に調べると, /etc/ImageMagick-6/policy.xml でPostScriptファイルの操作が有効でないようだったので,書き換えた.

cd /etc/ImageMagick-6/
sudo cp -p policy.xml policy.xml.bak
sudo vim policy.xml
  <!-- original -->
  <!-- <policy domain="coder" rights="none" pattern="PS" /> -->
  <!-- 修正後 -->
  <policy domain="coder" rights="read|write" pattern="PS" />

保存して閉じた後は問題なくできた.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2018-10-16 (Tue) 02:48:39 (60d)