Resources

Resources

یک PsdImage بارگذاری‌شده بلوک‌های منبع تصویر خود را — ورودی‌های سبک متادیتا مانند شبکه‌ها، راهنماها و بارهای پروفایل ICC — از طریق دو نمای فقط-خواندنی، به‌علاوه یک خلاصهٔ جداگانه برای پالت‌های رنگ ایندکس‌شده — نمایش می‌دهد.


فهرست‌گذاری بلوک‌های منبع

PsdImage.image_resources برای هر منبع یک PreservedResourceBlock بازمی‌گرداند، شامل شناسهٔ خام منبع، نام و اندازهٔ بایتی:

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 است، زیرا تجزیه‌کنندهٔ منابع این ساختار شناسه‌های خاص منابع را به ویژگی‌های معنایی رمزگشایی نمی‌کند.


شناسایی شناسه‌های منبع شناخته‌شده

از آنجا که 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)}")

نکات و بهترین روش‌ها

  • PsdImage.image_resources’ گیرنده برای فهرست‌کردن منابع کار می‌کند، اما تنظیم‌کنندهٔ آن NotSupportedException را ایجاد می‌کند — منابع در این ساختار متن‌باز فقط-خواندنی هستند.
  • PsdImage.has_icc_profile، is_icc_profile_untagged و global_angle مقادیر ثابت جای‌نگهدار در این ساختار متن‌باز هستند (همیشه به ترتیب False، None و 0) بدون توجه به محتوای واقعی سند بارگذاری‌شده — اگر نیاز دارید این منابع را خودتان شناسایی کنید، الگوی مقایسهٔ شناسهٔ منبع بالا را استفاده کنید.
  • PreservedResourceBlock.save() اگر به‌صورت مستقیم فراخوانی شود NotImplementedError را ایجاد می‌کند — منابع به‌صورت خودکار در طول مسیر (round-trip) پردازش می‌شوند وقتی image.save() را روی کل سند فراخوانی می‌کنید.

مشکلات رایج

مشکلدلیلرفع
image.indexed_palette None استنوع داده رنگی سند INDEXED_PALETTE نیستفقط اسناد رنگ نمایه‌ای دارای پالت هستند
تنظیم NotSupportedException image.image_resourcesتنظیم‌کننده در این ساخت FOSS پشتیبانی نمی‌شوددر نظر بگیرید image_resources به‌عنوان فقط-خواندنی
has_icc_profile / is_icc_profile_untagged / global_angle هرگز تغییر نمی‌کنداین ۳ ویژگی به‌صورت hardcoded به‌عنوان placeholder stub در این ساختار FOSS وجود دارندبه‌جای آن، block.id را در مقابل ImageResourceIds مقایسه کنید (به بالا مراجعه کنید)

FAQ

تفاوت بین image_resources و resources چیست؟

هر دو بلوک‌های منبع زیرین یکسانی را فهرست می‌کنند، اما به‌عنوان انواع شیء متفاوت: image_resources اشیای PreservedResourceBlock را برمی‌گرداند (شناسه/نام/اندازهٔ خام، برای انتقال دوری استفاده می‌شود)، در حالی که resources خلاصه‌های PsdResourceInfo را برمی‌گرداند (یک طبقه‌بندی kind اضافه می‌کند، که در حال حاضر همیشه UNKNOWN است).

آیا می‌توانم منبع تصویر را تغییر دهم یا حذف کنم؟

نه — متد setter image_resources باعث رخ دادن NotSupportedException می‌شود، و PreservedResourceBlock.save() در صورت فراخوانی مستقیم NotImplementedError را برمی‌انگیزد. منابع در این نسخهٔ متن باز فقط-خواندنی هستند.


خلاصهٔ API Reference

کلاس/متدتوضیح
PsdImage.image_resourcesبلوک‌های منبع خام (PreservedResourceBlock، فقط-خواندنی)
PsdImage.resourcesخلاصه‌های منبع (PsdResourceInfo، kind همیشه UNKNOWN)
PsdImage.indexed_paletteخلاصهٔ پالت رنگی نمایه‌شده، در صورت وجود
ImageResourceIdsثابت‌های شناسه منبع شناخته‌شده برای مقایسه با resource_id/id

همچنین ببینید:

 فارسی