ImageMagickで簡単画像変換

RubyGems Version RubyGems Downloads CI

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-modepdf または 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を指定してください。

開発

貢献するには:

  1. リポジトリを取得し、ローカル環境にクローンします。
  2. プロジェクトディレクトリへ移動し、依存関係をインストールしてください。
git clone https://github.com/Atelier-Mirai/images-convert.git
cd images-convert
bundle install

ライセンス

MIT License です。詳しくは LICENSE ファイルをご確認ください。

テストで使用している画像の出典

これらの写真をご提供くださった photoAC の作者の皆さまに深く感謝いたします。