画像とPDFを自由に加工できるimagemagickのconvertコマンドの使い方

公開日:2018/08/27 更新日:2018/08/27
画像とPDFを自由に加工できるimagemagickのconvertコマンドの使い方のサムネイル

はじめに

Ubuntuを使っていると、画像をPDFに変換したり、PDFを連結したりという作業がOS Xの時に比べて良いGUIアプリがまだありません。ただ、imagemagickconvertコマンドを使用するとかなり強力な処理を実行できます。このconvertコマンドの使い方についてまとめます。

imagemagickのインストール

convertコマンドはimagemagickに含まれているのでインストールします。

$ sudo apt-get install imagemagick

PDFを画像に変換、画像をPDFに変換する

以下のようにoriginal.pngoriginal.pdfとして新規作成されます。

$ convert original.png original.pdf

逆にPDFを画像に変換したい場合は順番を入れ替えます。

$ convert original.pdf original.png

つまり、基本的な使い方としては以下のようになります。

$ convert 変換前ファイル 変換後ファイル

実際には色々なオプションがあり、オプションを使用する場合は以下のように使います。

$ convert オプション 変換前ファイル 変換後ファイル

複数の画像を1つのPDFに変換する

以下では、正規表現を使ってimageで始まるPNGファイルを全てまとめて1つのPDFファイルにします。5つの画像ファイルがあれば5ページのPDFファイルになります。

$ convert image*.png mypdf.pdf

回転する

flipfloprotateオプションを使用することで画像やPDFを回転できます。

上下反転

$ convert -flip image.jpg image-fliped.jpg

左右反転

$ convert -flop image.jpg image-floped.jpg

角度を指定して回転

$ convert -rotate 180 image.jpg image-rotated.jpg

複数の画像を全て180度回転して1つのPDFに変換する

以下のようにすることで、フォルダ内にある全てのJPG画像を180度回転した上で、1つのPDFにまとめることができます。

$ convert -rotate 180 *.jpg output.pdf

PDFの指定したページのみを画像に変換する

例えばoriginal.pdf という名前のPDFファイルがあったとき、この5ページ目を 5.jpg という名前の画像ファイルに変換したい場合は以下のようにします。

$ convert original.pdf[5] 5.jpg

EXIF情報を削除する

EXIF情報(撮影位置、カメラ機種、撮影時のカメラ設定など)を全て削除します。以下は元々の画像も残ります。

$ convert -strip original.jpg noexif.jpg

グレースケールに変換

画像、PDFどちらでも以下のように-type GrayScaleを指定することでグレースケール化できます。

$ convert -type GrayScale original.jpg grayscale.jpg

シェルスクリプトと併用して応用する

シェルスクリプトを組み合わせることで色々な処理ができます。

複数の画像ファイルそれぞれをPDFに変換する

以下のように、forを使って、ファイル名が条件に一致するファイルをそれぞれ画像ファイルからPDFに変換するためのシェルスクリプトを作成します。ここではこのシェルスクリプトファイル名をconvert.shとします。

convert.sh
#!/bin/bash

for var in `seq 22 46`
do
    convert file-"$var".jpg  file-"$var".pdf
done

このファイルに以下で実行権限を与えて実行すると、file-22.jpgfile-46.jpgがそれぞれfile-22.pdffile-46.pdfに変換され作成されます。

$ chmod +x convert.sh
$ ./convert.sh

ちなみに、上記は以下のように1コマンドとしてそのままターミナルにコピペしても使えます。

$ for var in `seq 22 46`; do convert file-"$var".jpg file-"$var".pdf; done

複数の画像をそれぞれ180度回転したものを作成して保存

以下を実行すると、現在のディレクトリにある全てのPNGファイルを180度回転したものをrotated-元のファイル名.pngという名前で作成します。

$ for file in *.png; do convert $file -rotate 180 rotated-$file; done

参考サイト

以下のサイト様がかなり参考になりました。画像のリサイズなどについてもわかりやすくかかれています。 

まとめ

コマンドを使った処理は最初は抵抗あるかもしれませんが、大量のファイルを処理したい場合などはかなりの威力を発揮します。

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。