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 バリエーション。