2

PSD を PNG に変換しようとしましたが、PNG を保存すると、Wand (wand-0.4.0-py2.7) は PSD 内のすべてのレイヤーを個別の PNG ファイルとして吐き出します (最後に保存したファイルが必要なファイルです)。では、PSD から PNG に正しく変換するにはどうすればよいでしょうか。

# Convert a large PSD to small PNG thumbnail
myImage = Image(filename="test.psd")
myImage.resize(100, 100)
myImage.format = "png"
myImage.save(filename="test.png")

関連する解決策を見つけました:

しかし、Pythonでそれを行う方法がわからない(私はPythonが初めてです)

どんな助けでも大歓迎です。

4

1 に答える 1

2

これは、読み取りと書き込みの両方で適切かつ高速に機能します。

# Convert a large PSD to small PNG thumbnail
myImage = Image(filename="test.psd[0]")
myImage.format = "png"
myImage.sample(100, 100)
myImage.save(filename="test.png")

Wand は、PSD 内のすべてのレイヤーではなく、1 つのレイヤーのみを読み取るためです。

  • 重要なのは、ファイル名文字列に[0]を追加することです。
  • テスト後、[0]は PSD から最終的な合成画像を取得します。
  • 他のすべての数字は、それらがどの層を表しているかについて明確な意味を持っていないようです. 私の場合、[1] は下から 2 番目のレイヤー、[2] は 3 番目などなので、そのようにレイヤーを抽出しないことをお勧めします。

PSD ファイルのより複雑な操作については、Python psd-tools ( https://pypi.python.org/pypi/psd-tools ) を検討してください。しかし、私の最初のテストでは、PSD の読み込みがかなり遅くなりました (PSD 全体を読み込むためかもしれません)。


Qt による追加アプリケーション

PSD (またはその他の画像形式) を Qt UI にロードする場合に便利です。概念は、Wand によって読み込まれた画像を画像文字列に変換し、その画像文字列を QImage に送信することです。

# load the image first
myImage = Image(filename=r"c:\test.psd[0]")
myImage.format = "png"
myImage.sample(100, 100)
aBlob = myImage.make_blob()

# load the image data into QImage
myQImage = QtGui.QImage.fromData( aBlob )
myQPixmap = QtGui.QPixmap.fromImage( myQImage )
target_QLabel.setPixmap( myQPixmap )
于 2015-02-24T09:20:25.270 に答える