ImageMagickを使ってPSDから画像やメタデータを抽出・変換する方法をまとめました。
目次
1. PSDとは
- 拡張子:
.psd(標準) /.psb(大型ドキュメント) - 特徴
- 画像、レイヤー構造、マスク、テキスト、スマートオブジェクトなどを保持
- ICCカラープロファイルやメタデータ(EXIF/XMP/IPTC)を埋め込み可能
- 8bit/16bit/32bit チャンネル深度に対応
- CMYK、RGB、Grayscale、Labなどのカラーモードに対応
- レイヤーコンプ(Layer Comps)による表示状態の保存に対応
2. ImageMagickでPSDを扱う際の基本
ImageMagickはPSDの読み込みに対応していますが、Photoshopと完全な互換性があるわけではありません。
読み込み時の挙動はPSD内部の構造によって変化します。
読み込みの挙動
- デフォルト: PSDの全レイヤーやレイヤーコンプを個別画像として展開
- ファイル名末尾に
-0、-1、-2などの連番が付与される
- ファイル名末尾に
"[0]"を指定: 最初の画像(統合プレビュー)のみ取得"[n]"を指定: n番目の画像(レイヤー)のみ取得-flatten: 全レイヤーを合成して1枚の画像として出力(透過は保持可能)
3. ImageMagickでできること(PSD関連)
ImageMagickを使ったPSDの主な処理内容をまとめました。
基本的な出力・変換
PNG、JPEG、TIFF、WebPなど主要フォーマットへの変換
magick file.psd[0] out.png複数レイヤーを個別画像として一括出力
magick file.psd out.png
# out-0.png, out-1.png...カラースペース変換(RGB ↔ CMYK など)
カラースペース変換(RGB ↔ CMYK など)
magick file.psd[0] -colorspace sRGB out.pngICCプロファイルの埋め込み・変換
magick file.psd[0] -profile sRGB.icc out.pngチャンネル分離(R/G/B/Aなど)
magick file.psd[0] -channel R -separate r.png透過処理
アルファチャンネルの保持(-alpha on)
背景合成(白背景などへの置き換え)
magick file.psd[0] -background white -alpha remove out.jpg情報抽出
基本情報(幅、高さ、色数など)の取得
magick file.psd[0] -background white -alpha remove out.jpg詳細情報(メタデータ、ICCプロファイル、チャンネルなど)の取得
magick identify -verbose file.psdレイヤー数やコンプ数も、この-verbose出力から確認できます。
4. 出力できる情報例(magick identify -verbose file.psd)
- Format: PSD (Adobe Photoshop)
- Geometry: 3000×2000+0+0
- Colorspace: sRGB / CMYK / Gray
- Depth: 8-bit / 16-bit / 32-bit
- Layers:
- Layer 0: Background
- Layer 1: Text
- Layer 2: Shape
- Profiles:
- ICC profile
- XMP data
- IPTC data
- Compression: RLE / ZIP / None
- Alpha channels: Yes / No
- Resolution: DPI / PPI
5. 制限・注意点
- 完全な互換性はない
- 調整レイヤー(Adjustment Layers)やスマートオブジェクトの非破壊編集情報は再現不可
- レイヤースタイル(シャドウ、光彩など)はラスタライズ済み状態で読み込まれる場合がある
- スマートフィルター適用レイヤーの内部構造は展開不可
- レイヤーカンプの「名前」や「切り替え状態」は取得不可
- PSD内のレイヤーカンプ定義自体は認識されず、全レイヤーが個別画像として展開される
- テキストレイヤーはベクターとして保持されず、ラスタライズされる
- 大容量ファイル(PSB)への対応はビルド設定に依存する
6. 実務での使い分け
- 統合画像のみ抽出したい場合 →
[0]指定で取得可能(個別レイヤーを展開しない) - 個別レイヤーを抽出したい場合 →
[n]指定やオプションなしで全展開 - レイヤーカンプ単位で書き出したい場合 → Photoshopスクリプトで処理(ImageMagick単体では非対応)
- メタデータの解析のみ行いたい場合 →
identify -verbose
Photoshopの他の操作手順は、まとめ記事をご覧ください。
あわせて読みたい


Photoshopの使い方まとめ|レイヤー操作・書き出し・スクリプト
Photoshopの記事を、やりたいことから探せるように分類しました。 同じ作業を何度も繰り返している場合は、スクリプトの項目もご覧ください。 各カテゴリーは閲覧数の多…
読み込みと書き出しの記事は、ほかにもあります。
あわせて読みたい


Photoshop│「データセット」の使い方
Photoshopの標準機能であるデータセットを活用すると、CSVデータを読み込んで大量のテキストや画像を自動的に差し替えることができます。 本記事では、データセットを使…
あわせて読みたい


Photoshop│階層下のPSDをまとめてPNG書き出しする方法
フォルダ内にある大量のPSDファイルを一括でPNG形式に書き出したい場面はないでしょうか。 PSDに含まれるレイヤー差分までまとめて書き出したい場合、 PhotoshopのJSX(…
あわせて読みたい


Photoshop│PythonでPSDファイルを操作できるpsd-toolsの使い方
ImageMagickの代替として使い始めたpsd-tools。 PSDの編集はできないものの、情報の取得に特化していて便利です。 詳しい内容を解説します。 psd-toolsは、PythonでAdob…
あわせて読みたい


Photoshop│「ファイルをレイヤーとして読み込み」の使い方
Photoshopには、標準で利用できるスクリプトが用意されています。 ここでは、複数の画像ファイルを1つのドキュメントに個別レイヤーとして読み込める 「ファイルをレイ…
