هسته API

API اصلی

PsdImage نقطهٔ ورودی برای بارگذاری، بررسی و ذخیرهٔ اسناد PSD/PSB است. این کلاس، کلاس پایهٔ انتزاعی Image را گسترش می‌دهد که Width، Height، Bounds، Load()، Save() و Dispose() را اعلان می‌کند.


بارگذاری و ذخیرهٔ اسناد

Image.Load() مسیر فایل یا یک Stream را می‌پذیرد و یک Image برمی‌گرداند؛ برای دسترسی به بقیهٔ سطح سند، نتیجه را به PsdImage تبدیل کنید. PsdImage.Save() سند را دوباره به مسیر فایل یا جریان می‌نویسد.

using var image = (PsdImage)Image.Load(inputPath);
// ... inspect or edit ...
image.Save(outputPath);

ویژگی‌های سرصفحهٔ سند

PsdImage سرصفحهٔ تجزیه‌شده را به‌صورت ویژگی‌های نوع‌دار نمایش می‌دهد: Width، Height، BitsPerChannel، ColorMode، Version، Compression، Size و IsFlatten.

Console.WriteLine($"Width: {image.Width}, Height: {image.Height}");
Console.WriteLine($"ColorMode: {image.ColorMode}, Version: {image.Version}");
Console.WriteLine($"Compression: {image.Compression}, IsFlatten: {image.IsFlatten}");

منابع تصویر

PsdImage.ImageResources آرایهٔ ResourceBlock[] تجزیه‌شده را برمی‌گرداند. در این ساختار FOSS، ImageResources، GlobalLayerResources، ActiveLayer و HasTransparencyData قابل خواندن هستند اما نمی‌توان آن‌ها را مجدداً مقداردهی کرد — تنظیم‌کننده‌های آن‌ها NotSupportedException را پرتاب می‌کنند.

foreach (ResourceBlock resource in image.ImageResources)
{
    Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}

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

  • همیشه نتیجهٔ Image.Load() را به PsdImage تبدیل کنید تا به اعضای خاص PSD دسترسی پیدا کنید.
  • اشیای شایستهٔ Dispose() را در یک عبارت using بپیچید؛ PsdImage IDisposable را پیاده‌سازی می‌کند.
  • متغیرهای ImageResources، GlobalLayerResources، ActiveLayer و HasTransparencyData را به‌عنوان فقط‌خواندنی در نظر بگیرید حتی اگر setter ای ارائه می‌دهند.
  • قبل از اندیس‌گذاری در image.Layers، image.Layers.Length را بررسی کنید — یک سند مسطح ممکن است لایه‌ای نداشته باشد.

مشکلات رایج

مشکلدلیلرفع
NotSupportedException هنگام تنظیم ImageResourcesاین ویژگی در ساخت FOSS فقط-خواندنی است، حتی اگر setter داشته باشدمقدار را بخوانید؛ سعی نکنید آن را مجدداً اختصاص دهید
آرایهٔ خالی image.Layers در یک سند صاف‌شدهIsFlatten true است و سند هیچ لایهٔ تجزیه‌شده‌ای نداردقبل از ایندکس کردن به image.Layers، image.Layers.Length (یا image.IsFlatten) را بررسی کنید

FAQ

آیا بارگذاری یک سند PSD داده‌های پیکسل را رمزگشایی می‌کند؟

خیر. PsdImage.Load() هدر سند، متادیتای لایه و منابع را بدون رمزگشایی یا رندر داده‌های پیکسل تجزیه می‌کند.

آیا می‌توانم یک فایل PSD را به فرمت تصویر دیگری تبدیل کنم؟

خیر. این کتابخانه فقط اسناد PSD/PSB را بارگذاری، بررسی و ذخیره می‌کند — داده‌های پیکسل را رندر نمی‌کند و به فرمت‌های تصویر دیگر تبدیل نمی‌شود.


API Reference خلاصه

کلاس/متدتوضیح
Image.Load(string) / Image.Load(Stream)سند PSD یا PSB را بارگذاری می‌کند
PsdImage.Save(string) / PsdImage.Save(Stream)سند را ذخیره می‌کند
PsdImage.Width / Height / BitsPerChannel / ColorMode / Version / Compression / Size / IsFlattenویژگی‌های سرصفحه سند
PsdImage.ImageResourcesبلوک‌های منبع تصویر تجزیه‌شده (فقط خواندنی)

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

 فارسی