マイナビニュースマイナビ
tech+  Powered by  マイナビニュース マイナビニュース マイナビニュース
  • 企業IT
    • ITインフラ
    • セキュリティ
    • 開発/エンジニア
    • SaaS
    • 企業動向
    • マーケティング
    • キャリア/スキル
    • クラウド
    • ワークスタイル

    Sponsored

    • 無線LAN / Wi-Fi
    • Lenovoの企業支援+
    • デル・テクノロジーズ
    • Python学習
    • マウスコンピューター(法人)
    • 地域のスマート化
    • OPEN DX
    • マネーフォワード クラウド
    • 顧客データ活用
    • ノーコードツール kintone
    • プライバシー保護
    • 電通
    • 情シス業務改革特集
    • セキュリティ特集
    • 伊藤忠テクノソリューションズ
  • テクノロジー
    • 半導体
    • カーエレクトロニクス
    • HPC
    • 環境技術
    • サイエンス
    • 宇宙・航空
    • ものづくり

    Sponsored

    • IoT
    • インテルのAI × ITインフラ
  • 導入事例
    • 業種から探す
    • テーマから探す
    • 製品/ソリューションから探す
  • ホワイトペーパー
    コンテンツから探す
    • 事例
    • レポート
    • インタビュー
    • ソリューション
    テーマから探す
    • クラウド/データセンター
    • 仮想化
    • ハードウェア
    • スマートモバイル
    • ネットワーク
    • システム運用管理
    • CRM/SFA/マーケティング
    • 経営とIT
    • セキュリティ
    • 業務系システム
    • データ分析
    • 情報系システム
    • システム開発
    • ハードウェア開発
  • セミナー
  • はたらくの未来へ/日本HP
  • 生成AI時代のソフトウェア開発
おすすめのキーワード
  • 生成AI
  • 導入事例
  • LLM
  • AI
  • クラウド
  • ドラマ
  • お笑い
  • ビジネス用語
キーワード一覧
チャンネル一覧
  • 総合トップ
  • TECH+
  • +Digital
  • PREMIUM
  • ウーマン
  • ワーク&ライフ
  • 就職応援
  • エンタメ
  • ホビー
  • 特集
  • 地域活性
  • IIJ
  • 読者コーナー
  • おすすめナビ
  • マイナビBOOKS
関連サイト
Techplus menubanner
Navi seminar
マイナビニュースについて
  • SNSアカウント一覧
  • メールマガジン登録
マイナビニュース公式SNS
  • ]
お知らせ
プライバシーポリシーを一部改訂しました
  • TECH+
  • 企業IT
  • キャリア/スキル
  • ImageMagickで画像処理その2

連載

第48回
なんとなくコマンド

ImageMagickで画像処理その2

掲載日  2023/06/25 20:16

鍵アイコン
  • コマンド活用
  • macOS
  • Linux

今回も前回に続いてImageMagickです。前回は画像形式の変換だけでしたので、今回は簡単な画像処理を行ってみましょう。なお、前回と同様にラズベリーパイではバージョン6を、その他の環境(実行画面はmacOS)ではバージョン7を使用します。コマンドに違いがあるのでバージョンに合わせて使用してください。

今回もこれまでのようにサンプルで利用するファイル・ディレクトリはデスクトップのsampleディレクトリとしています。デスクトップにsampleディレクトリがない場合は作成しておいてください。(コマンド入力ならmkdir ~/Desktop/sampleとして作成することができます) また、カレントディレクトリも上記の場所になります。cd ~/Desktop/sampleのようにコマンドを入力してカレントディレクトリを変更しておけばよいでしょう。今回使用するのは1.jpgと2.jpgの画像2枚のみです。

以後の説明では1枚だけの画像処理について説明しています。複数画像を一括処理する場合は前回説明したmogrifyを使ってください。

単色の画像を生成する

 画像を加工する前に指定したサイズの画像を生成してみましょう。ImageMagickで指定したサイズで画像を生成するには-sizeの後に生成する画像のサイズを指定します。画像サイズは横幅x縦幅の形式で指定します。生成する際に画像の背景色を指定することもできます。背景色はxc:の後にカラー名や#112233、rgb(赤の輝度,緑の輝度,青の輝度)といった16進数で指定します。その後に保存する画像のファイル名(ファイルパス)を指定します。以下のようにすると320x240ピクセルサイズの青色の画像が生成されます。

・バージョン6

convert -size 320x240 xc:blue 1.png

・バージョン7

magick convert -size 320x240 xc:blue 1.png

以下の例では320x240ピクセルサイズの黄色の画像が生成されます。

・バージョン6

convert -size 320x240 xc:#ffff00 2.png

・バージョン7

magick convert -size 320x240 xc:#ffff00 2.png

画像の左右反転・上下反転

 次に簡単なところで画像を左右反転させてみましょう。画像を左右反転させるには-flopを指定します。以下のようにすると1.jpg画像を左右反転させ、1h.jpgという名前で保存します。

・バージョン6

convert -flop 1.jpg 1h.jpg

・バージョン7

magick convert -flop 1.jpg 1h.jpg

 左右反転でなく上下反転の場合は-flipを指定します。以下のようにすると2.jpg画像を上下反転させ、2v.jpgという名前で保存します。

・バージョン6

convert -flip 2.jpg 2v.jpg

・バージョン7

magick convert -flip 2.jpg 2v.jpg

左右反転と上下反転を同時に行う場合は、両方のオプションを指定します。

・バージョン6

convert -flip -flop 1.jpg 1hv.jpg

・バージョン7

magick convert -flip -flop 1.jpg 1hv.jpg

画像の色合いを調整する

 次に画像の色合いを調整してみましょう。画像の色合いを変更するには-modulateを指定します。このオプションには,で区切られた3つのパラメーターが必要です。最初に輝度(明るさ)、次に彩度、最後が色相です。いずれも基準値が100になっています。例えば画像を暗くしたい場合は以下のように100よりも少ない値を指定します。

・バージョン6

convert 1.jpg -modulate 50,100,100 1a.jpg

・バージョン7

magick convert 1.jpg -modulate 50,100,100 1a.jpg

彩度の場合は以下のように2番目の数値を変えます。この場合、カラー画像がグレースケール画像になります。(ちなみにImageMagickにはグレースケールに変換する専用のオプションがあります)

・バージョン6

convert 1.jpg -modulate 100,0,100 1b.jpg

・バージョン7

magick convert 1.jpg -modulate 100,0,100 1b.jpg

 色相だけを変えていくつかの画像を生成する場合はシェルスクリプトを作ってやれば簡単です。以下のシェルスクリプトでは5枚の色相を変えた画像が生成されます。i+=50の値を変えれば生成される画像の枚数と色相が変わります。

・バージョン6

#!/bin/bash
for ((i=0; i <= 200; i+=50)); do
    echo $i
    convert 1.jpg -modulate 100,100,$i "1_$i".jpg
done

・バージョン7

#!/bin/bash
for ((i=0; i <= 200; i+=50)); do
    echo $i
    magick convert 1.jpg -modulate 100,100,$i "1_$i".jpg
done

画像に枠を付ける

 次に画像に枠を付けてみましょう。枠のサイズは-borderで、枠の色は-bordercolorで指定できます。なお、画像のサイズは枠の幅だけサイズが大きくなります。

・バージョン6

convert 1.jpg -bordercolor "#CC0000" -border 4 1a.jpg

・バージョン7

magick convert 1.jpg -bordercolor "#CC0000" -border 4 1a.jpg

枠のサイズは横と縦幅を別々に指定できます。4x32と指定すると横が4ピクセル、縦が32ピクセルの枠サイズになります。

・バージョン6

convert 1.jpg -bordercolor "rgb(0,255,0)" -border 4x32 1a.jpg

・バージョン7

magick convert 1.jpg -bordercolor "rgb(0,255,0)" -border 4x32 1a.jpg

 フラットな枠ではなく立体的な枠も付けることができます。この場合は-frameの後に枠の幅、その後に+をつけて立体幅を指定します。-frame 20とすると20ピクセルのフラットな枠になります。また、-frame 20+5のような指定はエラーになるので-frame 20x20+5のように枠の横幅と縦幅を指定してから+で立体幅を指定します。立体幅は+直後が外側の幅になります。内側の幅も指定する場合は20x14+10+1のように外側の幅の後に+記号で続けて値を指定します。

・バージョン6

convert 1.jpg -mattecolor "rgb(0,255,0)" -frame 20x14+10+1 1f.jpg

・バージョン7

magick convert 1.jpg -mattecolor "rgb(0,255,0)" -frame 20x14+10+1 1f.jpg

写真風の枠を付ける

 Imagemagickでは手軽に写真風の枠を付けることができます。-polaroidの後に回転角度を指定します。また、影の色は-backgroundで指定することができます。

・バージョン6

convert 2.jpg -background "#0000FF" -polaroid 5 2a.png

・バージョン7

magick convert 2.jpg -background "#0000FF" -polaroid 5 2a.png

ここで注意しないといけないのはPNG形式など透明度情報をもつ画像形式でないと影の部分が綺麗になりません。JPEG形式で保存すると図のようになってしまいます。

magick convert 2.jpg -background "#0000FF" -polaroid 5 2a.jpg

文字を画像にする

 ImageMagickは文字を画像として生成することができます。ただし、英数字と基本記号以外は対応するフォントがないと描画されません。つまりアスキーコード以外のマルチバイト文字は環境依存になります。もっとも英数字であっても描画される文字はOSに搭載されているフォントや描画エンジンに依存してしまいます。ここらへんに注意して使用する必要があります。
 搭載されているフォント、つまり使用できるフォント一覧を調べるには-list fontを指定します。

・バージョン6

convert -list font

・バージョン7

magick convert -list font

 かなりフォント情報の量が多い場合は以下のようにリダイレクトしてテキストファイルに保存しておくと良いかもしれません。(以下はバージョン7の例)

magick convert -list font > font.txt

単純に見るだけならmoreやlessを使えば良いでしょう。

magick convert -list font | less

TimeやHelveticaなど特定のフォントがあるかどうかを調べたい場合はgrepを使えば簡単に調べることができます。例えばTimes-Boldフォントがあるかどうかは以下のように指定します。

magick convert -list font | grep "Times-Bold"

 使用できるフォントがあったら(決まったら)実際に文字を描画してみます。320x240の画像にCommandという文字を描画するには以下のように指定します。

・バージョン6

convert -size 320x240 -font "Times-Bold" label:"Command" t.png

・バージョン7

magick convert -size 320x240 -font "Times-Bold" label:"Command" t.png

fontに日本語フォントを指定すれば日本語も描画できます。以下はmacOS Venturaにあるヒラギノ明朝-Pro-W3フォントを使って文字を描画する例です。

・バージョン7(macOS Ventura)

magick convert -size 320x240 -font "ヒラギノ明朝-Pro-W3" label:"日本語" t.png

文字サイズや位置の指定

 文字サイズは-pointsizeで指定します。-pointsizeの後にポイントサイズを指定します。72dpiが基準になっているので解像度が96dpiや印刷などの300,350dpiの場合は、そこも計算してサイズを指定する必要があります。また、-pointsizeは文字を描画するlabelの後に指定しても反映されないことがあります。その場合は文字に関する指定はlabelよりも前に指定してください。

・バージョン6

convert -size 320x240 -font "Times-Bold" -pointsize 24 label:"Command" t.png

・バージョン7

magick convert -size 320x240 -font "Times-Bold" -pointsize 24 label:"Command" t.png

 文字の色は-fillの後に色名や#rrggbb、rgb()形式で指定します。

・バージョン6

convert -size 320x240 -font "Times-Bold" -pointsize 24 -fill red label:"Command" t.png

・バージョン7

magick convert -size 320x240 -font "Times-Bold" -pointsize 24 -fill red label:"Command" t.png

 文字をセンタリングするには-gravity centerを指定します。

・バージョン6

convert -size 320x240 -font "Times-Bold" -pointsize 24 -gravity center label:"Command" t.png

・バージョン7

magick convert -size 320x240 -font "Times-Bold" -pointsize 24 -gravity center label:"Command" t.png

-gravityでは他にも以下の位置を指定できます。

NorthWest 左上
North 上中央
NorthEast 右上
West 左中央
Center 全体の中央
East 右中央
SouthWest 左下
South 下中央
SouthEast 右下

 ピクセル単位で文字の位置を指定したい場合は-annotateを使います。-annotateの後に符号をつけてX,Y座標の値を指定します。原点は左上で右下に行くに従って座標値が大きくなります。なお、-annotateの場合、実行環境やフォント、基準となる文字のベースラインが異なるので描画される文字の位置には注意してください。また、以下の例のように背景色を指定しておかないとエラーになります。

・バージョン6

convert -size 320x240 xc:white -font "Times-Bold" -pointsize 24 -annotate +50+100 "Command" t.png

・バージョン7

magick convert -size 320x240 xc:white -font "Times-Bold" -pointsize 24 -annotate +50+100 "Command" t.png

 ImageMagickは他にもたくさんの機能があってキリがないので今回はここまでにしておきます。

この連載の前後回

  • 第50回
    入力したコマンドを保存する(UNIX系)
  • 第49回
    ImageMagickで画像処理その3
  • 第48回
    ImageMagickで画像処理その2
  • 第47回
    ImageMagickで画像処理その1
  • 第46回
    データのソート(UNIX系)
この連載のバックナンバー

AIが勧める、あなたのための会員限定記事

  • 2026年の半導体市場はメモリ高騰で前年比62.7%増へ、Omdiaが予測を上方修正
    半導体

    鍵アイコン 2026年の半導体市場はメモリ高騰で前年比62.7%増へ、Omdiaが予測を上方修正

  • 工学院大など、M87近傍からの相対論的ジェットに伝播する「横波」を発見
    宇宙・航空

    鍵アイコン 工学院大など、M87近傍からの相対論的ジェットに伝播する「横波」を発見

  • OISTなど、藤原定家の文献と年輪から鎌倉時代の太陽プロトン現象を特定
    宇宙・航空

    鍵アイコン OISTなど、藤原定家の文献と年輪から鎌倉時代の太陽プロトン現象を特定

  • ソニー半導体事業率いた清水照士氏、AI Powerに参画 次世代セキュリティ半導体ATOM展開へ
    半導体

    鍵アイコン ソニー半導体事業率いた清水照士氏、AI Powerに参画 次世代セキュリティ半導体ATOM展開へ

  • NEC、通期決算は増収増益 AI戦略「SaaS is dead」時代を追い風に
    企業動向

    鍵アイコン NEC、通期決算は増収増益 AI戦略「SaaS is dead」時代を追い風に

  • 富士通、2025年度決算は減収増益で過去最高益を更新 - 次期中計にも時田CEOが言及
    企業動向

    鍵アイコン 富士通、2025年度決算は減収増益で過去最高益を更新 - 次期中計にも時田CEOが言及

アクセスランキング
  • ワークエリアのインターネット環境の意図せぬ制限が業務の限界点になる

    鍵アイコン ワークエリアのインターネット環境の意図せぬ制限が業務の限界点になる

    2026/04/28 13:37 レポート
  • 通勤スキル"リアルタイム混雑情報"の駆使で都心の通勤課題を乗り越える

    鍵アイコン 通勤スキル"リアルタイム混雑情報"の駆使で都心の通勤課題を乗り越える

    2026/04/27 16:56 レポート
  • エンタープライズIT新潮流 第69回 組織変革を加速する「組織OS」とは?ピーター・センゲに学ぶ"学習する組織"の本質

    2026/04/27 11:28 連載
  •  プログラム言語を利用する(Ruby)

    鍵アイコン なんとなくコマンド 第113回 プログラム言語を利用する(Ruby)

    2026/04/23 16:31 連載
  • "究極"のNano Bananaプロンプトガイドとは?Googleが公式ブログで指南

    鍵アイコン "究極"のNano Bananaプロンプトガイドとは?Googleが公式ブログで指南

    2026/03/11 17:19 レポート
ランキングをもっと見る
もっと見る
  • コマンド活用
  • macOS
  • Linux

※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。予めご了承ください。

新着記事
  • ワークエリアのインターネット環境の意図せぬ制限が業務の限界点になる
    キャリア/スキル

    鍵アイコン ワークエリアのインターネット環境の意図せぬ制限が業務の限界点になる

    5時間前 レポート
  • 通勤スキル"リアルタイム混雑情報"の駆使で都心の通勤課題を乗り越える
    キャリア/スキル

    鍵アイコン 通勤スキル"リアルタイム混雑情報"の駆使で都心の通勤課題を乗り越える

    2026/04/27 16:56 レポート
  • エンタープライズIT新潮流 第69回 組織変革を加速する「組織OS」とは?ピーター・センゲに学ぶ"学習する組織"の本質
    キャリア/スキル

    エンタープライズIT新潮流 第69回 組織変革を加速する「組織OS」とは?ピーター・センゲに学ぶ"学習する組織"の本質

    2026/04/27 11:28 連載
  • Exa Enterprise AI、生成AI活用と変革を推進する人材の素養を測定できるテストを提供開始
    キャリア/スキル

    Exa Enterprise AI、生成AI活用と変革を推進する人材の素養を測定できるテストを提供開始

    2026/04/24 20:27
  • なんとなくコマンド 第113回 プログラム言語を利用する(Ruby)
    キャリア/スキル

    鍵アイコン なんとなくコマンド 第113回 プログラム言語を利用する(Ruby)

    2026/04/23 16:31 連載
  • 迷わないメニューの重要性とカスタマイズでトップメニューを変える心地良さ
    キャリア/スキル

    鍵アイコン 迷わないメニューの重要性とカスタマイズでトップメニューを変える心地良さ

    2026/04/22 14:35 レポート
こちらも注目
  • TECH+
  • 企業IT
  • キャリア/スキル
  • ImageMagickで画像処理その2

このカテゴリーについて

ビジネスパーソンのキャリアに関する情報や業務の効率化や生産性向上などのスキルアップに役立つ情報を提供していきます。

Techpopbanner upper Techpopbanner bottom
  • TECH+について
  • 利用規約
  • お知らせ
  • 会員規約
  • その他、お問い合わせ
  • 情報提供
  • サイトマップ
  • 広告について
  • 著作権と転載について
  • 個人情報の取り扱いについて
企業IT/テクノロジー/Members+ メールマガジン
  • 購読登録はこちら
  • 配信停止はこちら
TECH+ 公式SNS
Copyright © Mynavi Corporation