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 |