บทนำ

Aspose.PSD FOSS สำหรับ .NET ทำการโหลด, ตรวจสอบ, และบันทึกเอกสาร PSD และ PSB ผ่านชุดคลาสเล็กน้อย ข้อความนี้จะพิจารณาส่วนต่าง ๆ ของ API แกนหลักที่โพสต์แนะนำไม่ได้ครอบคลุมอย่างละเอียด: ความสัมพันธ์การสืบทอด Image/PsdImage, ชนิดค่าทางเรขาคณิตที่ใช้ทั่วไลบรารี, และวิธีที่ไลบรารีรายงานข้อผิดพลาดการโหลดและบันทึก.


สิ่งที่รวมอยู่

ภาพและ PsdImage

Image เป็นคลาสฐานแบบนามธรรมและเปิดเผย Width, Height, Bounds, Load(), Save(), และ Dispose(). PsdImage เป็นการนำไปใช้ที่แยกและเป็นคอนกรีตซึ่งส่งกลับโดย Image.Load() สำหรับข้อมูล PSD/PSB — การแคสท์ผลลัพธ์เป็น PsdImage จะเปิดเผยส่วนที่เหลือของโครงสร้างเอกสาร: ColorMode, Version, Layers, Compression, BitsPerChannel, และอื่น ๆ.

using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}");       // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}");  // PsdImage-specific

ประเภทค่าทางเรขาคณิต

Point, Size, Rectangle, และ RectangleF เป็นประเภทค่าที่ใช้สำหรับขอบเขตและพิกัดทั่ว API — Layer.Bounds และ Image.Bounds ทั้งสองเป็น Rectangle, และ PsdImage.Size เป็น Size. Rectangle มีเมธอดเรขาคณิตจริง: Contains(), Intersect(), Union(), Inflate(), และ FromLeftTopRightBottom(), เป็นต้น.

Rectangle layerBounds = image.Layers[0].Bounds;
Rectangle imageBounds = image.Bounds;

bool fullyInside = imageBounds.Contains(layerBounds);
Rectangle overlap = Rectangle.Intersect(imageBounds, layerBounds);
Console.WriteLine($"Layer fits inside image: {fullyInside}, overlap: {overlap}");

บล็อกทรัพยากรและข้อยกเว้น

PsdImage.ImageResources คืนค่าอาเรย์ ResourceBlock[] ที่แยกวิเคราะห์แล้ว — แต่ละบล็อกเปิดเผย ID, DataSize, Name และ Signature. ในการสร้าง FOSS นี้, ImageResources, GlobalLayerResources, ActiveLayer และ HasTransparencyData สามารถอ่านได้แต่ไม่สามารถกำหนดค่าใหม่ได้ — แต่ละตัวมี setter ที่จะโยน NotSupportedException หากถูกเรียกใช้, ดังนั้นให้ถือว่าเป็นแบบอ่านอย่างเดียวแม้ว่าจะปรากฏเป็นคุณสมบัติ.

ข้อผิดพลาดในการโหลดและบันทึกจะแสดงเป็นสองประเภทข้อยกเว้นที่กำหนดเฉพาะ: PsdLoadException เมื่อไม่สามารถแยกวิเคราะห์เอกสารได้, และ PsdSaveException เมื่อไม่สามารถเขียนเอกสารกลับออกได้.

try
{
    using var image = (PsdImage)Image.Load(inputPath);
    foreach (ResourceBlock resource in image.ImageResources)
    {
        Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
    }
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}

เริ่มต้นอย่างรวดเร็ว

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;

try
{
    using var image = (PsdImage)Image.Load("input.psd");
    Console.WriteLine($"Bounds: {image.Bounds}, ColorMode: {image.ColorMode}");
    Console.WriteLine($"ImageResources: {image.ImageResources.Length}");
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Load failed: {ex.Message}");
}

รูปแบบที่รองรับ

รูปแบบส่วนขยายอ่านเขียน
เอกสาร Photoshoppsd✓✓
เอกสาร Photoshop ขนาดใหญ่psb✓✓

โอเพนซอร์สและการให้สิทธิ์

Aspose.PSD FOSS สำหรับ .NET มีสัญญาอนุญาต MIT และสามารถใช้ในผลิตภัณฑ์เชิงพาณิชย์ได้โดยไม่มีค่าโรยัลตี้, ไม่มีลายน้ำการประเมินหรือขีดจำกัดการใช้งาน.

แพ็คเกจอยู่ที่เวอร์ชัน 1.0.0 และต้องการเพียง .NET 10.0 ในช่วงเวลารันไทม์ — ไม่มีการพึ่งพาจากบุคคลภายนอกอื่น ๆ.


เริ่มต้นใช้งาน

ทรัพยากรที่เกี่ยวข้อง