2012/07/29(日) [n年前の日記]
#3 [cg_tools] psdをレイヤー別にpngで保存する方法
_ImageMagickを使えばpsdファイルをレイヤー別に保存
できるらしい…。知らなかった。
Windows7 x64 + GIMP 2.6.11 で、複数のレイヤーを持ったpsdを保存して実験。ImageMagick の convert で変換。
と思ったが問題発見。全レイヤーに対して自動切り抜きをしたpsdで同じことをしたら、GIMPで開く際に、「画像サイズ外に描かれている変なpngだ」と警告されてしまった。Photoshop Elements 8.0 で psd を保存し直して試してみたけど、同じ結果に。どうやらあらかじめ、 _全レイヤーを画像サイズに合わせる 処理をしておかないといけない感じ。
GIMP + _Continuous Save なら、そういう問題は起きない模様。位置情報は消えるけど、レイヤー内の描かれている部分だけをpng保存してくれる。
その後少し調べてみたが、そもそも Photoshop Elements 8.0 でpsd保存すると、GIMP上で全レイヤーに自動切り抜きをかけた状態と同じになる。つまり、Photoshop Elements で保存したpsdに対してImageMagick でレイヤー別に保存すると、おかしなpngが出来てしまうのが確定、なわけで…。Photoshop しか持ってない人は、ImageMagick だけではレイヤー別に保存できないんじゃないかと思えてきたり。
_どうでもいいと思うよ: ImageMagickのPSDの扱い方 で詳細な実験結果が。どうやら各pngには、位置情報も含まれているらしい。それを取り出して位置合わせをすれば解決するらしいが、どう考えても面倒。
_image processing - Extract layers from PSD with ImageMagick, preserving layout - Stack Overflow に、気になるオプションが見つかった。
でも、やっぱり、GIMP + _Continuous Save + _全レイヤーを画像サイズに合わせる 、を使ったほうが楽かな。
Windows7 x64 + GIMP 2.6.11 で、複数のレイヤーを持ったpsdを保存して実験。ImageMagick の convert で変換。
convert hoge.psd -delete 0 fuga_%04d.png複数の fuga_*.png が得られた。GIMPでレイヤーとして開いてみたが、透明度も残ってるように見える。素晴らしい。
と思ったが問題発見。全レイヤーに対して自動切り抜きをしたpsdで同じことをしたら、GIMPで開く際に、「画像サイズ外に描かれている変なpngだ」と警告されてしまった。Photoshop Elements 8.0 で psd を保存し直して試してみたけど、同じ結果に。どうやらあらかじめ、 _全レイヤーを画像サイズに合わせる 処理をしておかないといけない感じ。
GIMP + _Continuous Save なら、そういう問題は起きない模様。位置情報は消えるけど、レイヤー内の描かれている部分だけをpng保存してくれる。
その後少し調べてみたが、そもそも Photoshop Elements 8.0 でpsd保存すると、GIMP上で全レイヤーに自動切り抜きをかけた状態と同じになる。つまり、Photoshop Elements で保存したpsdに対してImageMagick でレイヤー別に保存すると、おかしなpngが出来てしまうのが確定、なわけで…。Photoshop しか持ってない人は、ImageMagick だけではレイヤー別に保存できないんじゃないかと思えてきたり。
_どうでもいいと思うよ: ImageMagickのPSDの扱い方 で詳細な実験結果が。どうやら各pngには、位置情報も含まれているらしい。それを取り出して位置合わせをすれば解決するらしいが、どう考えても面倒。
_image processing - Extract layers from PSD with ImageMagick, preserving layout - Stack Overflow に、気になるオプションが見つかった。
convert hoge.psd -set dispose Background -coalesce -delete 0 fuga_%04d.pngこれなら、警告が出ないフツーのpngに変換できた、ような気がする。オプションの意味はさっぱりわからないけど。
でも、やっぱり、GIMP + _Continuous Save + _全レイヤーを画像サイズに合わせる 、を使ったほうが楽かな。
- レイヤー内の描いたところだけ出力したいなら、そのまま Continuous Save を使う。
- 各レイヤーを画像サイズで保存したいなら、全レイヤーを画像サイズに合わせる、を使ってから Continuous Save を使う。
[ ツッコむ ]
以上です。