PSDファイルとは、言わずと知れたAdobe Photoshopが使っているファイル形式。このPSDファイルをRubyから操作することができる夢のようなライブラリ「PSD.rb」が公開されています(Tumblr)。
AdobeのPSDフォーマットの詳細は公開されておらず長年ブラックボックスでしたが、このライブラリを使って不透明性が取り払われることになるのでしょうか。
できることは?
Aboutによると、PSD.rbは総合的なPSDファイルパーサーで、以下のようなツリー構造のデータをハッシュ形式で管理できるということ。
レイヤー情報はもちろん、レイヤー内部のフォントサイズやフォント名、テキストエリアの内容、色情報などにもアクセスできそうですね。
サンプルコード
GitHubページに簡単なサンプルが掲載されています。
require 'psd'
psd = PSD.new('/path/to/file.psd')
psd.parse!
pp psd.tree.to_hash
psdファイルを開いて解析実行。ppで解析結果を表示すると以下の内容が表示されます。
{:children=>
[{:type=>:group,
:visible=>false,
:opacity=>1.0,
:blending_mode=>"normal",
:name=>"Version D",
:left=>0,
:right=>900,
:top=>0,
:bottom=>600,
:height=>900,
:width=>600,
:children=>
[{:type=>:layer,
:visible=>true,
:opacity=>1.0,
:blending_mode=>"normal",
:name=>"Make a change and save.",
:left=>275,
:right=>636,
:top=>435,
:bottom=>466,
:height=>31,
:width=>361,
:text=>
{:value=>"Make a change and save.",
:font=>
{:name=>"HelveticaNeue-Light",
:sizes=>[33.0],
:colors=>[[255, 19, 120, 98]],
:css=>
"font-family: \"HelveticaNeue-Light\", \"AdobeInvisFont\", \"MyriadPro-Regular\";\nfont-size: 33.0pt;\ncolor: rgba(19, 120, 98, 255);"},
:left=>0,
:top=>0,
:right=>0,
:bottom=>0,
:transform=>
{:xx=>1.0, :xy=>0.0, :yx=>0.0, :yy=>1.0, :tx=>456.0, :ty=>459.0}},
:ref_x=>264.0,
:ref_y=>-3.0}]
}],
:document=>{:width=>900, :height=>600}}
PSDファイルに含まれている各種情報が表示されていることがわかります。
凄い(かもしれない)
現段階でどのくらい安定して使用できるのか不明ですが、長年謎だったPSDフィアルフォーマットをRubyから操作できるライブラリが公開されたのは凄い。GitHubを生かした今後の発展にも期待したいと思います。