คอร์ 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 implements IDisposable.
  • พิจารณา ImageResources, GlobalLayerResources, ActiveLayer และ HasTransparencyData ว่าเป็นแบบอ่านอย่างเดียวแม้ว่าจะมี setter เปิดเผยอยู่ก็ตาม.
  • ตรวจสอบ image.Layers.Length ก่อนทำการเข้าถึง image.Layers — เอกสารที่แบนอาจไม่มีเลเยอร์เลย.

ปัญหาที่พบบ่อย

ปัญหาสาเหตุวิธีแก้ไข
NotSupportedException เมื่อกำหนด ImageResourcesคุณสมบัตินี้เป็นแบบอ่านอย่างเดียวในรุ่น FOSS แม้จะมี setterอ่านค่าดังกล่าว; อย่าพยายามกำหนดค่าใหม่ให้กับมัน
อาร์เรย์ image.Layers ว่างบนเอกสารที่แบนIsFlatten คือ true และเอกสารไม่มีเลเยอร์ที่วิเคราะห์ตรวจสอบ image.Layers.Length (หรือ image.IsFlatten) ก่อนทำดัชนีไปยัง image.Layers

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บล็อกทรัพยากรภาพที่แยกวิเคราะห์ (อ่านอย่างเดียว)

ดูเพิ่มเติม

 ภาษาไทย