発端
今回、吉里吉里用のPSDプラグインに、PhotoShopの「塗りの不透明度」(↓これです)を読み出す機能を追加しようと思い立ちました。
調査
PhotoShopのPSDファイルフォーマットの公式な仕様書はAdobeのサイトで公開されています。
Adobe Photoshop File Formats Specification
PhotoShopの「塗り」パラメータは英語では「Fill」もしくは「Fill Opacity」と表現されます。仕様書内をこのあたりのキーワードで検索してみましたが、該当するフィールドの定義が見当たりません。
関連情報を検索してみると、どうもこの仕様書はメンテナンスが不十分な様子なので、該当の仕様が記載漏れになっている可能性を疑いました。そこで、既存のpsd parseライブラリのいずれかにヒントが無いか調べることにしました。
その結果、libpsdの実装に、対応するフィールドの読み出し機能が実装されていることを発見しました。
結論
「塗りの不透明度」のフィールドは、Layer Info の Additional Layer Information に、 'iOpa' というキーで格納されています。
前述の公式の仕様書にならうと、以下のような定義になります。
Additional Layer Information
Fill Opacity
The key of the fill opacity is 'iOpa'. The Data has the following format:
Fill Opacity Info
Length | Description |
---|---|
1 | Opacity: 0 = transparent ... 255 = opaque |
3 | Padding |