هسته 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بپیچید؛PsdImageIDisposableرا پیادهسازی میکند. - متغیرهای
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 | بلوکهای منبع تصویر تجزیهشده (فقط خواندنی) |