چگونه با Aspose.PSD FOSS هسته API در .NET کار کنیم
Aspose.PSD FOSS برای .NET ساختار سند PSD/PSB را از طریق PsdImage، که زیرکلاسی از Image است، بارگذاری و بررسی میکند. این مقاله به بارگذاری یک سند، خواندن سرآیند و منابع تصویری آن، و ذخیرهٔ آن بر روی دیسک میپردازد.
راهنمای گامبهگام
گام ۱: نصب بسته
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildگام ۲: وارد کردن کلاسهای مورد نیاز
using Aspose.PSD.FileFormats.Psd;گام ۳: بارگذاری یک سند PSD/PSB
PsdImage.Load یک سند را از مسیر فایل یا یک جریان باز میکند:
using var image = PsdImage.Load("input.psd");مرحله ۴: بررسی سرصفحه سند
PsdImage فیلدهای سرصفحهای که از سند تجزیهشده خوانده شدهاند را نمایش میدهد: Width, Height, BitsPerChannel, ColorMode (یک مقدار ColorModes)، و Compression (یک مقدار CompressionMethod):
Console.WriteLine($"{image.Width}x{image.Height}, {image.BitsPerChannel} bpc");
Console.WriteLine($"Color mode: {image.ColorMode}"); // e.g. ColorModes.Rgb
Console.WriteLine($"Compression: {image.Compression}"); // e.g. CompressionMethod.RLE
Console.WriteLine($"Flattened: {image.IsFlatten}");ColorModes شامل مقادیر Bitmap, Grayscale, Indexed, Rgb و Cmyk است، ضمن اینکه موارد دیگری مانند (Multichannel, Duotone, Lab) نیز وجود دارند. مقادیر CompressionMethod عبارتند از Raw, RLE, ZipWithoutPrediction و یک گونه ZIP-with-prediction.
مرحله ۵: خواندن بلوکهای منبع تصویر
ImageResources ورودیهای ResourceBlock تجزیهشده سند را برمیگرداند. هر بلوک ID، Name و Size را نمایش میدهد:
foreach (var resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}ImageResources در این ساخت FOSS فقط برای خواندن است — اختصاص به آن باعث خطا میشود NotSupportedException (به محدودیتهای شناختهشده در FAQ).
مرحله ۶: ذخیره سند
image.Save("output.psd");مشکلات رایج و راهحلها
PsdLoadException هنگام بارگذاری یک فایل. ورودی یک سند PSD/PSB معتبر نیست، یا سرآیند آن اعتبارسنجی را رد کرده است. قبل از بارگذاری، تأیید کنید که فایل یک فایل واقعی PSD/PSB است.
NotSupportedException هنگام تنظیم ImageResources or GlobalLayerResources. این تنظیمکنندهها در این ساخت FOSS پشتیبانی نمیشوند. در نظر بگیرید ImageResources بهعنوان فقطخواندنی.
ColorMode or Compression بهجای نام، بهصورت مقدار عددی چاپ میشود. ویژگی را بهصورت صریح به نوع enum آن تبدیل کنید، یا از .ToString()، برای دریافت نام قابل خواندن (ColorModes.Rgb، نه 3).
سوالات متداول
آیا میتوانم یک فایل PSD را از یک جریان (stream) بهجای مسیر فایل بارگذاری کنم؟
بله — PsdImage.Load دارای یک overload است که یک Stream را میپذیرد.
آیا ImageResources شامل دادههای لایه است؟
خیر. ImageResources بلوکهای منبع در سطح سند را نگه میدارد (از بخش منابع تصویر PSD تجزیه-تحلیل شده). دادههای سطح لایه از طریق PsdImage.Layers — ببینید کار با لایهها.
آیا PsdImage.Version نسخه فرمت فایل PSD است؟
نه. PsdImage.Version یک شماره نسخه داخلی API سازگار با Aspose.PSD را گزارش میکند (در حال حاضر 6) — این ارتباطی با این که فایل بارگذاریشده PSD یا PSB باشد ندارد.