Resources

Resources

เมื่อโหลด PsdImage แล้ว จะเปิดเผยบล็อกทรัพยากรภาพของมัน — รายการสไตล์เมตาดาต้า เช่น ตาราง, ไกด์, และข้อมูลภาระโปรไฟล์ ICC — ผ่านสองมุมมองแบบอ่านอย่างเดียว พร้อมสรุปแยกต่างหากสำหรับพาเลตสีที่ทำดัชนี.


รายการบล็อกทรัพยากร

PsdImage.image_resources คืนค่า PreservedResourceBlock ต่อทรัพยากร โดยมี ID ของทรัพยากรดิบ, ชื่อ, และขนาดเป็นไบต์:

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.resources.imageresourceids import ImageResourceIds

image = PsdImage.load(input_path)

for block in image.image_resources:
    print(f"ID: {block.id}, name: {block.name!r}, size: {block.size} bytes")

PsdImage.resources คืนค่าสรุป PsdResourceInfo แยกต่างหากต่อทรัพยากรแทน โดยเพิ่มการจำแนก kind — ในการสร้าง FOSS นี้ kind จะเป็น PsdResourceKind.UNKNOWN เสมอ เนื่องจากตัวแยกวิเคราะห์ทรัพยากรของการสร้างนี้ไม่ถอดรหัส ID ของทรัพยากรเฉพาะเป็นคุณสมบัติเชิงความหมาย.


การระบุ ID ทรัพยากรที่รู้จัก

เนื่องจาก kind ไม่ได้รับการแก้ไขเชิงความหมาย จึงระบุทรัพยากรเฉพาะโดยเปรียบเทียบ block.id กับค่าคงที่ใน ImageResourceIds:

for block in image.image_resources:
    if block.id == ImageResourceIds.ICC_PROFILE:
        print(f"Found an ICC profile resource ({block.data_size} bytes)")

การอ่านพาเลตสีที่จัดทำเป็นดัชนี

หากข้อมูลสีของเอกสารเป็นแบบใช้พาเลต, PsdImage.indexed_palette จะคืนค่ารายการของมัน:

palette = image.indexed_palette

if palette is not None:
    print(f"Palette entries: {len(palette.entries)}")

เคล็ดลับและแนวปฏิบัติที่ดีที่สุด

  • ตัวรับค่า (getter) ของ PsdImage.image_resources ทำงานเพื่อแสดงรายการทรัพยากร, แต่ตัวตั้งค่า (setter) ของมันทำให้เกิด NotSupportedException — ทรัพยากรเป็นแบบอ่านอย่างเดียวในรุ่น FOSS นี้.
  • PsdImage.has_icc_profile, is_icc_profile_untagged, และ global_angle เป็นค่าตัวแทนที่กำหนดไว้ในรุ่น FOSS นี้ (เสมอเป็น False, None, และ 0 ตามลำดับ) ไม่ว่าจะเนื้อหาจริงของเอกสารที่โหลดเป็นอย่างไร — ใช้รูปแบบการเปรียบเทียบ resource-ID ข้างต้นหากคุณต้องการตรวจจับทรัพยากรเหล่านี้ด้วยตนเอง.
  • PreservedResourceBlock.save() ทำให้เกิด NotImplementedError หากเรียกโดยตรง — ทรัพยากรจะทำการรอบผ่านโดยอัตโนมัติเมื่อคุณเรียก image.save() กับเอกสารทั้งหมด.

ปัญหาทั่วไป

ปัญหาสาเหตุแก้ไข
image.indexed_palette คือ Noneชนิดข้อมูลสีของเอกสารไม่ใช่ INDEXED_PALETTEเอกสารที่ใช้สีแบบ indexed-color เท่านั้นที่มีพาเล็ต
ตั้งค่า NotSupportedException image.image_resourcesตัวตั้งค่าไม่รองรับในรุ่น FOSS นี้ถือ image_resources เป็นแบบอ่านอย่างเดียว
has_icc_profile / is_icc_profile_untagged / global_angle ไม่เคยเปลี่ยนแปลงคุณสมบัติเหล่านี้ 3 รายการเป็น stub placeholder ที่ฝังคงที่ในบิลด์ FOSS นี้เปรียบเทียบ block.id กับ ImageResourceIds แทน (ดูด้านบน)

FAQ

ความแตกต่างระหว่าง image_resources และ resources คืออะไร?

ทั้งสองรายการบล็อกทรัพยากรพื้นฐานเดียวกัน แต่เป็นประเภทวัตถุที่ต่างกัน: image_resources คืนค่าอ็อบเจ็กต์ PreservedResourceBlock (ID/ชื่อ/ขนาดดิบ, ใช้สำหรับการ round-tripping) ส่วน resources คืนค่าสรุป PsdResourceInfo (เพิ่มการจัดประเภท kind, ปัจจุบันจะเป็น UNKNOWN เสมอ).

ฉันสามารถแก้ไขหรือลบทรัพยากรภาพได้หรือไม่?

ไม่ — ตัวตั้งค่า image_resources จะโยน NotSupportedException, และ PreservedResourceBlock.save() จะโยน NotImplementedError หากถูกเรียกโดยตรง. ทรัพยากรเป็นแบบอ่านอย่างเดียวในรุ่น FOSS นี้.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
PsdImage.image_resourcesบล็อกทรัพยากรดิบ (PreservedResourceBlock, อ่านอย่างเดียว)
PsdImage.resourcesสรุปทรัพยากร (PsdResourceInfo, kind เสมอ UNKNOWN)
PsdImage.indexed_paletteสรุปพาเล็ตสีที่ทำดัชนี, หากมี
ImageResourceIdsค่าคงที่ ID ของทรัพยากรที่รู้จักสำหรับการเปรียบเทียบกับ resource_id/id

ดูเพิ่มเติม

 ภาษาไทย