วิธีโหลดเอกสาร PSD ใน Python

วิธีโหลดเอกสาร PSD ใน Python

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. สตรีมต้นทางหมดข้อมูลระหว่างการพาร์ส (an EOFError ขณะอ่าน) — ไฟล์น่าจะถูกตัดขาด.

PsdLoadException: Failed to read PSD/PSB data from the source stream. เกิดข้อผิดพลาด I/O ขณะอ่านจากสตรีมเอง, ถูกห่อหุ้มและยกขึ้นใหม่เป็น PsdLoadException.

ArgumentNullException เมื่อเรียก load. load ถูกเรียกด้วย None เป็นอาร์กิวเมนต์สตรีม.

คำถามที่พบบ่อย

ฉันต้องย้อนตำแหน่งสตรีมกลับไปยังจุดเริ่มต้นก่อนเรียก load หรือไม่?

ไม่ — หากสตรีมสามารถเลื่อนตำแหน่งได้, load จะคืนตำแหน่งเดิมหลังการอ่าน; หากไม่สามารถเลื่อนตำแหน่งได้, load ยังทำงานได้เพราะมันบัฟเฟอร์ข้อมูลของสตรีมภายในก่อนการพาร์ส.

ความแตกต่างระหว่างข้อล้มเหลว FileNotFoundError/PsdLoadException สองกรณีข้างต้นคืออะไร?

พาธไฟล์ที่หายไปทำให้เกิดข้อผิดพลาดมาตรฐาน FileNotFoundError ก่อนการแยกวิเคราะห์ใด ๆ จะเริ่มต้น. A PsdLoadException หมายความว่าไฟล์ (หรือสตรีม) ถูกพบและเปิดแล้ว, แต่ข้อมูล PSD/PSB นั้นเองถูกตัดขาด, เสียหาย, หรือไม่สามารถอ่านได้เมื่อการแยกวิเคราะห์เริ่มต้น — ดูเพิ่มเติม Troubleshooting สำหรับเวอร์ชันและขอบเขตที่เกี่ยวข้อง PsdLoadException ตัวแปร.

ดูเพิ่มเติม

 ภาษาไทย