Python で PSD ドキュメントを保存およびエクスポートする方法
このガイドでは、編集したドキュメントをファイルパスに保存する方法、オープンストリームに保存する方法、そしてその後に読み込まれた画像を破棄する方法を示します。PsdImage.save はドキュメントを書き戻すための唯一の公開エントリポイントで、ファイルパスまたは既にオープンされている書き込み可能なストリームのいずれかを受け付けます。実際にバイトエンコードを行う低レベルのセクションライターは内部実装の詳細であり、直接呼び出すものではありません。
ステップバイステップガイド
ステップ 1: パッケージをインストール
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATHステップ 2: 必要なクラスをインポート
PsdImageはこのガイドの例が必要とする唯一のクラスです:
from aspose_psd_foss.psdimage import PsdImageステップ3: ファイルパスに保存
ドキュメントを読み込み、編集を行い、そしてファイルパスに保存し直します:
image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")ステップ4: 開いているストリームに保存
パスの代わりにストリームを渡すと、保存後もストリームが開いたままになります — 閉じるタイミングは自分で管理できます:
with open("output.psd", "wb") as stream:
image.save(stream)ステップ5: 画像を破棄
ロードしたPsdImageが保持しているリソースは、使用が終わったら解放してください:
image.dispose()一般的な問題と対策
RuntimeError: PsdImage has been disposed. 呼び出すとき save. 画像はすでに破棄されています(経由で dispose() または with 終了したブロック) の前に save が呼び出されました。呼び出し save 破棄する前に。
PsdSaveException Pascal文字列の長さについて。 文字列の値が255バイトを超えています — 参照 PSD Core 例外の処理 and Troubleshooting.
保存時に PSD または PSB コンテナを強制する方法はありません。 出力コンテナ形式を選択する公開された API はありません — 保存は常に読み込まれた形式 (is_large_document / is_psb) ドキュメントが読み込まれた形式です。別のコンテナ形式が必要な場合、この FOSS ビルドにはサポートされた変換パスはありません。
よくある質問
ストリームに保存した後、ストリームは閉じられますか?
いいえ — save にストリームを渡すと、ストリームはその後も開いたままになるので、ライフサイクルは自分で管理できます(Step 4 を参照)。対照的に、ファイルパスに保存する場合は、内部でファイルを開いて閉じます。
内部のセクションライターを save の代わりに直接呼び出すことはできますか?
いいえ — セクションレベルのライターは PsdImage.save によって呼び出される内部実装の詳細です。PsdImage インスタンス上で save を呼び出す以外に、ドキュメントを書き込むための文書化されたサポートされた方法はありません。