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 |