ImageMagickで簡単画像変換
ImageMagickを使った画像形式変換のためのRuby gem。Thorで構築され、単一ファイル変換、ディレクトリ一括変換、設定値の保存機能、waifu2xによる高解像度アップスケールを備えたCLIツールです。HEIC、JPG、PNG、WebPなど様々な画像形式間の変換をサポートします。
インストール
インストールは超簡単! ターミナルから次のコマンドを実行するだけ
gem install images-convert
🎉 インストール完了! すぐに使い始めてみましょう!
# 単一ファイル変換
# HEIC→JPGへの変換が既定値です。画像幅は1920xにリサイズされます。
# 例: ~/Downloads/IMG_2000.HEIC を ~/Desktop/IMG_2000.jpg に変換
images-convert IMG_2000.HEIC ~/Downloads ~/Desktop
# 入力ディレクトリは ~/Downloads、出力ディレクトリは ~/Desktop が既定値です。
# また、画像ファイル名がIMG_で始まる場合は、以下のように省略できます。
images-convert 2000
# 短縮コマンド(エイリアス)を用いて、同じ操作を実行できます。
imgconv 2000
# 「最新N件をまとめて変換」ショートカット
images-convert -5 # 最新の5件を既定値で変換
images-convert -0 # すべての対象ファイルを既定値で変換
images-convert --all # すべての対象ファイルを既定値で変換
基本的な使い方
HEICをJPGに変換する
入力ディレクトリは ~/Downloads、出力ディレクトリは ~/Desktop が既定値です。
また、画像ファイル名が IMG_ で始まる場合は、IMG_2000.HEIC に代えて、2000 と省略できます。
images-convert 2000
# または
imgconv 2000
最新N件/全件を変換する
既定の入出力ディレクトリ、変換形式、リサイズ幅を用いて、最新N件または全件を変換します。
判定基準の既定値は、mtime(ファイル更新日時)です。exif(EXIF 撮影日時)を基準に最新N件を選定する場合は、--latest-exif オプションを指定します。
images-convert -5 # 最新5件を既定値で変換
images-convert -5 --latest-exif # EXIF 撮影日時で最新5件を変換
images-convert -0 # すべての対象ファイルを既定値で変換
images-convert --all # --all でも同じ
最新件数の判定基準を切り替える
-N を利用した際の「最新順」の基準は、mtime(ファイル更新日時)が既定値ですが、 exif(EXIF 撮影日時)を既定値に設定することもできます。
images-convert set-latest-mode exif # 以後は EXIF を基準に最新N件を選定する
images-convert set-latest-mode mtime # ファイル更新日時を既定値に戻す
直接入出力ディレクトリやリサイズ幅を指定する
以下のように書くことで、任意の入出力ディレクトリや変換形式、リサイズ幅を指定できます。~/Pictures/flower.jpg は入力ファイル、~/Desktop/flower.webp は出力ファイル、1024x はリサイズ幅を表します。
images-convert ~/Pictures/flower.jpg ~/Desktop/flower.webp 1024x
ディレクトリ名を省略した場合には、既定値の入出力ディレクトリが用いられます。 横幅を1024xにリサイズして、flower.jpgをflower.webpに変換します。
images-convert flower.jpg flower.webp 1024x
高さをx1024にリサイズして、flower.jpgをflower.webpに変換します。
images-convert flower.jpg flower.webp x1024
横幅を50%にリサイズして、flower.jpgをflower.webpに変換します。
images-convert flower.jpg flower.webp 50%
変換形式やリサイズ幅、入出力ディレクトリを変更する
既定値を、ご自身が良く用いる変換形式やリサイズ幅に変更できます。
# 例: JPG→WebP、リサイズ幅1024x
images-convert set JPG WebP 1024x
# 例: JPG→WebP、リサイズ幅50% (拡張子は大文字小文字を区別しません。またjpg/jpegを同一視します。)
images-convert set jpeg webp 50%
以後はファイル名(または番号)だけで変換できます。
# 例: ~/Downloads/flower.jpg を ~/Desktop/flower.webp に変換
images-convert flower
# 例: ~/Downloads/IMG_2000.jpg を ~/Desktop/IMG_2000.webp に変換
images-convert 2000
入力/出力ディレクトリを設定することも可能です。
入力元 ~/Documentsフォルダ、出力先 ~/Documents/convertedフォルダにする例です。
images-convert set-dir ~/Documents ~/Documents/converted
waifu2x による高解像度化(AI アップスケール)
--resize などで指定したサイズが現在の画像より大きくなる場合、自動的に waifu2x (waifu2x-ncnn-vulkan) を利用した高解像度化に切り替わります。waifu2x 実行ファイルやモデルは、必要に応じて自動ダウンロードされます。
# 例: 元画像が幅500pxの場合は 4 倍に拡大
images-convert input.png --resize 2000x --output output.png
出力形式が png/jpg/jpeg/webp のいずれかであれば、自動アップスケールが適用されます。それ以外の形式やアップスケール不要な場合は、従来どおり MiniMagick による通常変換が行われます。
補足: たとえば元画像が 300px なら waifu2x が 4 倍、700px なら 2 倍に拡大し、最後は MiniMagick が
--resizeで指定した 2000px へ仕上げます。常に最終出力は--resizeの指示どおりになります。
waifu2x の既定値を設定する
# 例: 既定倍率4倍、ノイズ除去レベル3、モデル anime を設定
images-convert config set-waifu2x --scale 4 --noise 3 --model anime
# 例: A4向け自動スケールを無効化し、出力フォーマットを jpg に固定
images-convert config set-waifu2x --no-auto-scale-a4 --image_format jpg
利用可能な主なオプション(config set-waifu2x):
--scale NUM… 既定の拡大率 (1〜4, 3は4と同等)--noise NUM… ノイズ除去レベル (0〜4)--model NAME… モデルエイリアス(例:anime,photo,anime_style_art_rgbなど)--[no-]auto-scale-a4… A4 用紙に合わせた自動スケール調整を利用するか--[no-]a4-print… PDF 生成時に A4 レイアウトを適用するか--image_format FORMAT… waifu2x の出力画像フォーマット--on_error ACTION… エラー発生時の挙動 (stopまたはskip)--quality NUM… waifu2x 出力品質 (1〜100, 未指定時は既定値)
設定後は images-convert config で現在の waifu2x 既定値を確認できます。
PDF を生成する
複数ページの PDF を出力したい場合は、--output-mode に pdf または both を指定します。拡大・縮小のいずれの場合でも利用でき、both を指定すると画像出力と PDF を同時に取得できます。
# 例: ディレクトリ内の画像を拡大(または縮小)して PDF 化
images-convert convert /path/to/images --output-mode pdf --waifu2x-model anime --pdf-quality 90 --pdf-density 300
# 例: 拡大(または縮小)した画像と PDF を両方出力
images-convert convert /path/to/images --output-mode both --waifu2x-image-format webp
PDF 関連オプション:
--pdf-compression {jpeg|jpeg2000|zip}… PDF に埋め込む画像の圧縮方式--pdf-quality NUM… 圧縮品質 (0〜100)--pdf-density NUM… ページ解像度 (DPI)--waifu2x-a4-print/--no-waifu2x-a4-print… A4 レイアウト (余白・中央寄せ) の有無
PDF 出力先は、指定がなければ入力ディレクトリに ディレクトリ名.pdf として作成されます。--output や --output-dir と組み合わせて保存先を調整できます。
最新件数の判定基準を切り替える
--latest を利用した際の「最新順」の基準を mtime(ファイル更新日時)と exif(EXIF 撮影日時)から選べます。
images-convert set-latest-mode exif # 以後は EXIF を基準に最新N件を選定
images-convert set-latest-mode mtime # 既定値(ファイル更新日時)に戻す
ディレクトリからディレクトリへ一括変換する
入力ディレクトリ内にある画像ファイルを纏めて、出力ディレクトリに変換することができます。
例: ~/Pictures/HEIC ディレクトリ内の HEICファイルを、~/Desktop/converted ディレクトリに JPG(既定値) + リサイズ幅1920x(既定値)で一括変換する
images-convert ~/Pictures/HEIC ~/Desktop/converted
事前に出力形式やサイズを変更しておけば、その設定が適用されます
images-convert set HEIC WebP 1024x
# 以降は、HEIC->WebP、1024xで一括変換されます。
images-convert convert ~/Pictures/HEIC ~/Desktop/converted
引数
images-convert ファイル名または番号
または
images-convert 入力ディレクトリ 出力ディレクトリ
- ファイル名または番号のみ指定すれば、設定された形式・サイズで変換します
- ディレクトリ指定時は、入力ディレクトリ内の対象拡張子を一括で変換し、出力ディレクトリに保存します
- 対応形式: HEIC, JPG, PNG, GIF, WebP, TIFF, BMP, ICO, PDFなど、ImageMagickでサポートする形式
- 形式名は大文字・小文字を区別しません(例: HEIC/heic/JPG/jpg いずれも可)
- jpeg 指定時は出力拡張子を jpg に統一します(入力は .jpg / .jpeg の両方を自動検出)
入力ディレクトリに変換後のファイルを書き出す場合には、出力ディレクトリの指定を省略できます。
images-convert 入力ディレクトリ兼出力ディレクトリ
オプション
-h, --help: ヘルプメッセージを表示-v, --version: バージョン情報を表示-d, --delete: 変換後に元のファイルを削除-i, --input_dir: 入力ディレクトリを指定-o, --output_dir: 出力ディレクトリを指定-f, --overwrite: 既存の出力ファイルがある場合に上書き(デフォルトはスキップ)-s, --suffix VALUE: 出力ファイル名にサフィックスを付与(例:_resized)--recursive: ディレクトリを再帰的に処理--latest N: 入力ディレクトリ内(既定は設定の input_dir)から更新日時の新しい順に N 件を変換-N: 入力ディレクトリ内(既定は設定の input_dir)から更新日時の新しい順に N 件を変換(ショートカット)--allまたは-0: 入力ディレクトリ内の対象ファイルをすべて変換--quality NUM: JPEG / WebP などの出力品質 (1〜100)。未指定時は設定ファイルの既定値を使用
ディレクトリ一括変換で 入力ディレクトリ のみ指定した場合についての補足説明:
- JPG から WebP への変換など、異なる形式の変換を行う場合は、出力先は入力先と同じディレクトリになります。 (例: 同じディレクトリに flower.jpg -> flower.webp が生成されます。)
- JPG から JPG への変換など、同一形式の変換を行う場合(リサイズのみを行う場合)は、出力先は入力先と同じディレクトリですが、安全の為、デフォルトでは上書きしません。
--overwriteを明示することにより、上書きを許可できます。(flower.jpg -> flower.jpg)。または--suffix _resizedを使用して、flower.jpg -> flower_resized.jpg のように出力ファイル名を変更できます。
既定値(デフォルト設定)
初回実行時に自動作成される設定ファイル(~/.images-convert/config.yml)の既定値は以下の通りです。
- 入力形式(from): HEIC
- 出力形式(to): JPG
- リサイズ(resize): 1920x
- 入力ディレクトリ:
~/Downloads - 出力ディレクトリ:
~/Desktop
設定のカスタマイズ
使いやすいように、自分好みの設定にカスタマイズしましょう!
# 現在の設定を表示(初回実行時は自動で設定ファイルが作成されます)
images-convert config
# デフォルト値を変更(例: JPG→WebP、サイズ1024x)
images-convert config set JPG WebP 1024x
# 設定変更後は省略して使用可能
images-convert 2000 # JPG→WebP、1024xで変換、Documentsフォルダから出力
# 最新N件を指定のディレクトリで
images-convert -3 --input_dir ~/Pictures --output_dir ~/Desktop
# または次のように省略できます
images-convert -3 ~/Pictures ~/Desktop
# コマンドラインオプションで一時的に指定することもできます。
# 例: 入力ディレクトリを ~/Pictures、出力ディレクトリを ~/Desktop に指定する例
images-convert flower ~/Pictures ~/Desktop
images-convert 2000 ~/Pictures ~/Desktop
設定ファイルは自動で作成されます ~/.images-convert/config.yml に保存されます。
既定値へ戻したい場合は imgconv config reset を実行してください(確認を省略する場合は --force を付与)。
アンインストール時のクリーンアップ
gemをアンインストールする際は、設定ファイルも自動で削除されます:
images-convert cleanup
これで ~/.images-convert/ ディレクトリ全体が削除されます。
設定ファイルの例(既定値)
Gemインストール直後に作成される設定ファイルは次のようになっています。
# ~/.images-convert/config.yml
defaults:
from: HEIC # 入力形式
to: JPG # 出力形式
resize: 1920x # リサイズ値
directories:
input: ~/Downloads # 入力ディレクトリ
output: ~/Desktop # 出力ディレクトリ
selection:
latest_mode: mtime # 最新件数判定基準 (mtime/exif)
waifu2x:
scale: 2 # 拡大率 (1-4)
noise: 1 # ノイズ除去レベル (0-4)
model: photo # モデルエイリアス
auto_scale_a4: true # A4基準の自動スケール調整
a4_print: true # A4レイアウトPDF調整(デフォルトで有効)
image_format: webp # waifu2x出力フォーマット
on_error: stop # エラー時の挙動 (stop/skip)
output:
image_quality: 90 # 出力画像品質 (1-100)
pdf_quality: 90 # PDF埋め込み画像の品質 (1-100)
pdf_compression: jpeg # PDF埋め込み画像の圧縮方式 (jpeg/jpeg2000/zip)
pdf_density: 300 # PDF埋め込み画像のDPI
対話式セットアップを利用する
imgconv setup コマンドを実行すると、既定値を対話形式で更新できるウィザードが起動します。
bin/imgconv setup
- 現在値を保持したい場合は Enter キーを押すだけで OK です。
y/nの質問では、「現在値」と「既定値」が併記されるため、いま有効になっている設定を確認しながら変更できます。- 形式名やモデル名など、候補が決まっている項目は、入力ミスがあれば再入力を求めます(例: 最新判定モードは
mtimeまたはexifのみ受け付け)。 - ウィザード終了時には、変更された項目が
旧値 => 新値の形式で表示され、新しい値は端末上で緑色でハイライトされます。 - そのまま
imgconv configが呼び出され、最新の設定一式が即座に表示 されます。
ヘルプを表示する
images-convert --help
# または
imgconv --help
バージョン情報を表示する
images-convert --version
# または
imgconv --version
要件
- Ruby 3.3+
images-convertは Ruby 製の CLI ツールです。Ruby 3.3 以上がインストールされた環境でご利用ください。
- ImageMagick(未導入の場合は初回実行時に自動導入を案内します)
- 変換処理には ImageMagick を利用します。インストールされていない場合、初回実行時に対話形式で導入を案内します。
- waifu2x-ncnn-vulkan(AI アップスケール機能を使用する場合)
- waifu2x バイナリを環境に用意するか、または
config set-waifu2xでパス/自動ダウンロードURLを指定してください。
- waifu2x バイナリを環境に用意するか、または
開発
貢献するには:
- リポジトリを取得し、ローカル環境にクローンします。
- プロジェクトディレクトリへ移動し、依存関係をインストールしてください。
git clone https://github.com/Atelier-Mirai/images-convert.git
cd images-convert
bundle install
ライセンス
MIT License です。詳しくは LICENSE ファイルをご確認ください。
テストで使用している画像の出典
- 桜と小鳥、メジロの夫婦: https://www.photo-ac.com/main/detail/28776655
- 青空とひまわり: https://www.photo-ac.com/main/detail/33232207
- 秋の満月: https://www.photo-ac.com/main/detail/27810146
- 雪だるま: https://www.photo-ac.com/main/detail/4880573
これらの写真をご提供くださった photoAC の作者の皆さまに深く感謝いたします。