วิธีทำงานกับ Aspose.PSD FOSS Core API ใน Python
Aspose.PSD FOSS สำหรับ Python โหลดและตรวจสอบโครงสร้างเอกสาร PSD/PSB ผ่าน PsdImage, ซึ่งเป็นคลาสย่อยของ Image. บทความนี้ครอบคลุมการโหลดเอกสาร, การอ่านส่วนหัวและทรัพยากรภาพ, และการบันทึกกลับไปยังดิสก์.
คู่มือขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 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: โหลดเอกสาร PSD/PSB
PsdImage.load() เปิดเอกสารจากเส้นทางไฟล์หรือสตรีม:
from aspose_psd_foss.psdimage import PsdImage
image = PsdImage.load("input.psd")ขั้นตอนที่ 4: ตรวจสอบส่วนหัวของเอกสาร
PsdImage แสดงฟิลด์ส่วนหัวที่อ่านจากเอกสารที่วิเคราะห์แล้ว: width, height, bits_per_channel, color_mode (ค่าประเภท ColorModes), และ compression (ค่าประเภท CompressionMethod):
print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}") # e.g. ColorModes.RGB
print(f"Compression: {image.compression}") # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")ค่า ColorModes มี BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE, และ LAB. ค่า CompressionMethod มี RAW, RLE, ZIP_WITHOUT_PREDICTION, และ ZIP_WITH_PREDICTION.
ขั้นตอนที่ 5: อ่านบล็อกทรัพยากรภาพ
image_resources คืนรายการ ResourceBlock ที่วิเคราะห์ของเอกสาร. แต่ละบล็อกแสดง id, name, และ size:
for resource in image.image_resources:
print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")image_resources เป็นแบบอ่านอย่างเดียวในรุ่น FOSS นี้ — การกำหนดค่าให้มันทำให้เกิดข้อผิดพลาด NotSupportedException (ดูข้อจำกัดที่ทราบใน FAQ).
ขั้นตอนที่ 6: บันทึกเอกสาร
เขียนเอกสารกลับไปยังดิสก์ แล้วปล่อยทรัพยากรของภาพ:
image.save("output.psd")
image.dispose()ปัญหาทั่วไปและวิธีแก้
PsdLoadException เมื่อโหลดไฟล์. อินพุตไม่ใช่เอกสาร PSD/PSB ที่ถูกต้อง หรือส่วนหัวของมันไม่ผ่านการตรวจสอบความถูกต้อง ตรวจสอบว่าไฟล์เป็นไฟล์ PSD/PSB แท้ก่อนทำการโหลด.
NotSupportedException เมื่อกำหนดค่า image_resources or global_layer_resources. ตัวตั้งค่านี้ไม่ได้รับการสนับสนุนในรุ่น FOSS นี้. ถือว่า image_resources เป็นแบบอ่านอย่างเดียว.
คำถามที่พบบ่อย
ฉันสามารถโหลดไฟล์ PSD จากสตรีมแทนเส้นทางไฟล์ได้หรือไม่?
ใช่ — PsdImage.load() ยอมรับทั้งสตริงเส้นทางไฟล์หรือสตรีมที่อ่านได้ (io.BytesIO/io.BufferedIOBase).
image_resources มีข้อมูลเลเยอร์หรือไม่?
ไม่. image_resources เก็บบล็อกทรัพยากรระดับเอกสาร (แยกวิเคราะห์จากส่วนทรัพยากรภาพ PSD) ข้อมูลระดับเลเยอร์จะถูกอ่านผ่าน PsdImage.layers — ดู การทำงานกับเลเยอร์.
PsdImage.version เป็นเวอร์ชันของรูปแบบไฟล์ PSD หรือไม่?
ไม่. PsdImage.version รายงานหมายเลขเวอร์ชัน API ที่เข้ากันได้กับ Aspose.PSD ภายใน (ขณะนี้คือ 6) — ซึ่งไม่เกี่ยวข้องกับว่าไฟล์ที่โหลดเป็น PSD หรือ PSB หรือไม่. ตัวตั้งค่าของมันรับค่าเฉพาะ 6 เท่านั้น; ค่าที่อื่นจะทำให้เกิด ValueError.