วิธีทำงานกับ Aspose.PSD FOSS Core API ใน Python

วิธีทำงานกับ 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.

ดูเพิ่มเติม

 ภาษาไทย