PSD ファイルとは何ですか?
PSD (Photoshop Document) は、グラフィックスの設計と開発に使用される Adobe Photoshop のネイティブ ファイル形式を表します。 PSD ファイルには、イメージ レイヤー、調整レイヤー、レイヤー マスク、注釈、ファイル情報、キーワード、およびその他の Photoshop 固有の要素が含まれる場合があります。 Photoshop ファイルのデフォルトの拡張子は .PSD で、高さと幅の最大値は 30,000 ピクセル、長さの制限は 2 ギガバイトです。
PSD ファイル形式の仕様
PSD ファイルのデータは、ビッグ エンディアンのバイト順で格納されます。これは、Windows プラットフォームで読み取りまたは書き込みを行うときに、短整数と長整数を交換することを意味します。 Photoshop ファイル形式は、5 つの主要部分に分かれています。あるセクションから次のセクションに移動するために使用できる多くの長さマーカーがあります。長さマーカーは通常、最も近い 2 または 4 バイトの間隔に丸めるためにバイトでパディングされます。 5 つの主要な部分は次のとおりです。
- ファイルヘッダー
- カラーモードデータ
- 画像リソース *レイヤーとマスク情報 ※画像データ
Photoshop がセクション全体を読み取ろうとする可能性があるため、準拠のために、セクション内のこれらすべてのフィールドにデータを書き込む必要があります。また、ファイルへの書き込み中にスキップされたフィールドにゼロが書き込まれることも意味します。長さで区切られたセクションの長さフィールドを使用して、読み取りをいつ停止するかを決定する必要があります。ほとんどの場合、長さフィールドは、後続のレコードではなくバイト数を示します。ファイルを読み込む際には、次の点に注意する必要があります。
※すべての表の「長さ」列の値はバイト単位です。
- Unicode 文字列として定義されたすべての値は、次のもので構成されます。
- 文字列の文字数 (バイト数ではない) を表す 4 バイトの長さフィールド。
- 1 文字あたり 2 バイトの Unicode 値の文字列。
ファイルヘッダー
ファイル ヘッダーには、画像の基本的なプロパティが含まれています。
長さ | 説明 |
---|---|
4 | 署名: 常に ‘8BPS’ に等しい。署名がこの値と一致しない場合は、ファイルを読み取ろうとしません。 |
2 | バージョン: 常に 1 です。バージョンがこの値と一致しない場合は、ファイルを読み取ろうとしません。 (~~PSB~~ バージョンは 2 です。) |
6 | 予約済み: ゼロでなければなりません。 |
2 | アルファ チャンネルを含む画像のチャンネル数。サポートされる範囲は 1 ~ 56 です。 |
4 | 画像の高さ (ピクセル単位)。サポートされる範囲は 1 ~ 30,000 です。 |
4 | 画像の幅 (ピクセル単位)。サポートされる範囲は 1 ~ 30,000 です。 |
2 | 深さ: チャネルあたりのビット数。サポートされている値は、1、8、16、および 32 です。 |
2 | ファイルのカラー モード。サポートされている値は次のとおりです。グレースケール # 1;インデックス # 2; RGB # 3; CMYK # 4;マルチチャンネル # 7;ダブルトーン # 8;ラボ # 9。 |
カラーモードデータセクション
カラー モード データ セクションは、次のように構成されています。
長さ | 説明 |
---|---|
4 | 次のカラー データの長さ |
変数 | カラーデータ |
カラー モード データは、ファイル ヘッダー セクションのモード フィールドで定義されているように、インデックス カラーとダブルトーンでのみ使用できます。他のすべてのモードでは、このセクションは 4 バイトのゼロ値で表されます。インデックス付きカラー イメージの場合、長さは 768 で、カラー データにはイメージのカラー テーブルがインターリーブされていない順序で含まれます。デュオトーン イメージの場合、カラー データにはデュオトーン仕様が含まれます (その形式は文書化されていません)。 Photoshop ファイルを読み取る他のアプリケーションは、ダブルトーン イメージをグレー イメージとして扱い、ファイルの読み取りおよび書き込み時にダブルトーン情報の内容を保持するだけです。
画像リソース セクション
ファイルの 3 番目のセクションには、画像リソースが含まれています。長さフィールドで始まり、その後に一連のリソース ブロックが続きます。
長さ | 説明 |
---|---|
4 | 画像リソース セクションの長さ。長さはゼロの場合があります。 |
変数 | 画像リソース (画像リソース ブロック) |
画像リソースは、ペン ツール パスなどの画像に関連付けられた非ピクセル データを格納するために使用されます。これらは、Photoshop の初期バージョンで Macintosh のリソースに保存されたデータを保持するため、リソース ブロックと呼ばれます。画像リソース ブロックの基本構造は次のとおりです。
長さ | 説明 |
---|---|
4 | 署名: ‘8BIM’ |
2 | リソースの一意の識別子。 Image resource IDs には、Photoshop で使用されるリソース ID のリストが含まれています。 |
Variable | Name: サイズが均等になるようにパディングされたパスカル文字列 (null 名は 2 バイトの 0 で構成されます) |
4 | 後続のリソース データの実際のサイズ |
変数 | 個々のリソース タイプのセクションで説明されているリソース データ。サイズを揃えるために中綿を入れています。 |
画像リソースは、いくつかの標準 ID 番号を使用します。
レイヤーとマスク情報
Photoshop ファイルの 4 番目のセクションには、レイヤー数、レイヤー内のチャンネル、ブレンド範囲、調整レイヤー キー、エフェクト レイヤー、マスク パラメータなど、レイヤーとマスクに関する情報が含まれています。レイヤーまたはマスクがない場合、このセクションはゼロで埋められた 4 バイト フィールドで表されます。値がゼロであるため、このセクションを読み取る際は、セクションの長さに特別な注意を払う必要があります。レイヤーとマスク セクションの配置は次のとおりです。
長さ | 説明 |
---|---|
4 | レイヤーとマスク情報セクションの長さ。 (PSB の長さは 8 バイトです。) |
変数 | レイヤー情報 |
変数 | グローバル レイヤー マスク情報 |
Variable | さまざまなタイプのデータを含む一連のタグ付きブロック。 |
レイヤー情報
次の表は、レイヤー情報の構成の概要を示しています。
長さ | 説明 |
---|---|
4 | 2 の倍数に切り上げられたレイヤー情報セクションの長さ (PSB の長さは 8 バイトです)。 |
2 | レイヤー数。負の数の場合、その絶対値はレイヤーの数であり、最初のアルファ チャネルには結合結果の透明度データが含まれます。 |
変数 | 各レイヤーに関する情報。レイヤー レコードを参照して、各レイヤーのこの情報の構造について説明します。 |
変数 | チャンネル画像データ。レイヤーごとに 1 つ以上の画像データ レコードが含まれます。レイヤーは、レイヤー情報と同じ順序です |
画像データ
イメージ ピクセル データは、ファイルのイメージ データ セクションに含まれています。画像データ セクションのデータの配置は、平面の順序です。つまり、最初にすべての赤のデータ、次にすべての緑のデータなどです。各プレーンはスキャン ライン順に格納され、パッド バイトはありません。画像データ セクションはフォーマットで配置されます。次の表に示すとおりです。
長さ | 説明 |
---|---|
2 | 圧縮方法: *0 = Raw 画像データ * 1 = RLE 圧縮 画像データは、すべてのスキャン ライン (行 * チャネル) のバイト カウントから始まり、各カウントは 2 バイト値として格納されます。 RLE 圧縮データが続き、各スキャン ラインが個別に圧縮されます。 RLE 圧縮は、Macintosh ROM ルーチン PackBits および TIFF 標準で使用されるものと同じ圧縮アルゴリズムです。 *2 = 予測なしの ZIP *3 = 予測ありの ZIP。 |
変数 | 画像データ。平面秩序 = RRR GGG BBB など |