6

複数のレイヤーがあり、png ファイル (レイヤーごとに 1 つ) を吐き出す PSD フォトショップ イメージを読み込むための Python プログラムを作成する必要があります。Pythonでそれを行うことはできますか?PIL を試してみましたが、レイヤーにアクセスする方法がないようです。ヘルプ。PS。私自身の PSD ローダーと png ライターの作成は、遅すぎることがわかりました。

4

5 に答える 5

5

Gimp-Python を使用しますか? http://www.gimp.org/docs/python/index.html

そのように Photoshop は必要なく、Gimp と Python を実行するすべてのプラットフォームで動作するはずです。これは大きな依存関係ですが、無料です。

PILでそれを行うには:

from PIL import Image, ImageSequence
im = Image.open("spam.psd")
layers = [frame.copy() for frame in ImageSequence.Iterator(im)]

編集: OK、解決策を見つけました: https://github.com/jerem/psdparse

これにより、Python以外のものを使用せずに、Pythonを使用してpsdファイルからレイヤーを抽出できます。

于 2011-07-20T09:23:28.823 に答える
2

Python で Photoshop にアクセスするには、win32com を使用できます。あなたの仕事のための可能な擬似コード:

  1. PSD ファイルを読み込む
  2. すべてのレイヤーを収集し、すべてのレイヤーを VISIBLE=OFF にする
  3. レイヤーを次々と回転させ、VISIBLE=ON とマークして PNG にエクスポートします。
    win32com.client をインポート
    pApp = win32com.client.Dispatch('Photoshop.Application')

    def makeAllLayerInvisible(lyrs):
        for ly in lyrs:
            ly.Visible = False

    def makeEachLayerVisibleAndExportToPNG(lyrs):
        for ly in lyrs:
            ly.Visible = True
            options = win32com.client.Dispatch('Photoshop.PNGSaveOptions')
            options.Interlaced = False
            tf = 'PNG ファイル名とパス'
            doc.SaveAs(SaveIn=tf,Options=オプション)
            ly.Visible = False

    #pApp.Open(PSDファイル)
    doc = pApp.ActiveDocument
    makeAllLayerInvisible(doc.Layers)
    makeEachLayerVisibleAndExportToPNG(doc.Layers)

于 2011-09-12T18:42:25.993 に答える
1

PSD ファイルを読み取るためのhttps://code.google.com/p/pypsd/およびhttps://github.com/kmike/psd-tools Python パッケージもあります。

于 2012-11-03T18:56:28.203 に答える