Python で PSD ドキュメントを読み込む方法

Python で PSD ドキュメントを読み込む方法

PsdImage.load は PSD/PSB ドキュメントを開くための唯一の公開エントリーポイントです — ファイルパスまたは既に開かれた読み取り可能ストリームのいずれかを受け付けます。内部で委譲される低レベルのセクションごとのリーダーは、直接呼び出すものではありません。

ステップバイステップガイド

ステップ 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: 必要なクラスをインポートする

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

ステップ 3: ファイルパスから読み込む

image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()

ステップ 4: ストリームからロード

ストリームはシーク可能である必要はありません — load は解析する前に全内容を内部バッファに読み込みます:

with open("input.psd", "rb") as stream:
    image = PsdImage.load(stream)

print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()

一般的な問題と対処法

FileNotFoundError: File not found: .... 渡されたパスは load 既存のファイルを指していません — load checks os.path.isfile それを開く前に。

PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. ソースストリームが解析途中でデータ切れになりました( EOFError 読み取り中) — ファイルは途中で切れている可能性があります。

PsdLoadException: Failed to read PSD/PSB data from the source stream. ストリーム自体から読み取る際に I/O エラーが発生し、ラップされて再スローされ、として PsdLoadException.

ArgumentNullException 呼び出す際に load. load が呼び出された際に None ストリーム引数として。

よくある質問

load を呼び出す前に、ストリームを先頭にシークする必要がありますか?

いいえ — ストリームがシーク可能な場合、load は読み取り後に元の位置に復元します。シーク不可能な場合でも、load はストリームの内容を内部でバッファリングしてから解析するため、機能します。

上記の FileNotFoundError/PsdLoadException の2つの失敗の違いは何ですか?

ファイルパスが欠如していると、標準の FileNotFoundError 解析が開始される前に。A PsdLoadException 代わりに、ファイル(またはストリーム)が見つかり開かれたものの、PSD/PSB データ自体が解析開始後に切り詰められ、破損している、またはその他の理由で読み取れないことを意味します — 参照も Troubleshooting バージョンおよび境界に関連する PsdLoadException バリエーション。

参照

 日本語