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