PSD書き出しを書いてみた

レイヤーを扱えるツールを作ってみようかと思ってとっかかりにPSD書き出し機能を作ってみた。
まずPSD形式を書き出せるライブラリとかを探してみたのだがよさげなのを発見できなかった(PILはREAD ONLYらしい)。
なので自作する方向で情報収集を開始した。
PSD読み書きに対応したAdobe以外のソフトも存在する(GimpとかSaiなど)ので何かしら仕様とかが転がっているだろうと思っていたらなんとか発見。
http://www.shiojiri.ne.jp/~openspc/format/Photoshop/index.html
Photoshop4.0形式とか書いてあります。
RGBAと表示非表示、透明度、合成方法くらいまでの情報が欲しかったのでこれで十分であろう。
あとちょうどいいことにpythonの書き出しコードを発見した。
http://park7.wakwak.com/~blackbox/etc/psd_out.py

この辺を元に簡単なサンプルを作ってみた。
仕様はwxPythonで複数の画像を読み込んでそれをレイヤーにしてPSDに書き出せるというものにした。あと、ドラッグで位置を変更したりとか。

コードは長くなるのでこっちにおいておきました。

出力結果は、GimpとSaiで読み込めることを確認できた。
でもIrfanViewでは真黒。
サムネイルのようなものを仕込んでおくところがあるのかも。