PsdImage และ
Layer ให้ .NET นักพัฒนาเข้าถึงโครงสร้างของเอกสาร PSD อย่างโปรแกรมได้โดยไม่มี
การพึ่งพา native เพื่อคอมไพล์. ไลบรารีนี้อ่านมิติของไฟล์ PSD/PSB, โหมดสี, ความลึกบิต, และการบีบอัด
วิธีการ, และเปิดเผยทุกเลเยอร์ผ่าน PsdImage.Layers: แต่ละ Layer รายงานชื่อของมัน,
ขอบเขต, ความทึบ, การมองเห็น, และคีย์โหมดผสม (BlendMode), พร้อมกับระดับล่างของ
ข้อมูลช่อง (ChannelInformation) และข้อมูลมาสก์ (LayerMaskData). ส่วนย่อยของ
metadata ของเลเยอร์ — ชื่อ, ขอบเขต (Left/Top/Right/Bottom), และโหมดผสม — สามารถ
แก้ไขในที่เดียวและบันทึกกลับไปยังดิสก์ด้วย PsdImage.Save(); ส่วนอื่น ๆ ทั้งหมดบน
พื้นผิวเป็นแบบอ่านอย่างเดียวตามการออกแบบในรุ่น FOSS นี้. Aspose.PSD FOSS for .NET ได้รับใบอนุญาต MIT. ติดตั้งโดยใช้
dotnet add package Aspose.PSD.FOSS — ไลบรารีนี้ไม่มีการพึ่งพา native ของบุคคลที่สาม
การพึ่งพา, มีเพียง .NET BCL. สำหรับตระกูลผลิตภัณฑ์องค์กร, ดูที่ Aspose.PSD — Enterprise Product Family.Image.Load(filePath) หรือ Image.Load(stream) เปิดไฟล์และคืนค่า Image ซึ่งต้องแคสท์เป็น PsdImage เพื่อเข้าถึงข้อมูลเฉพาะของ PSDPsdImage.Width, Height และ Size รายงานขนาดของแคนวาสPsdImage.ColorMode (ColorModes), BitsPerChannel และ Compression (CompressionMethod) อธิบายวิธีการเข้ารหัสข้อมูลพิกเซลPsdImage.Version (PsdVersion) แยกแยะระหว่าง PSD มาตรฐานกับรูปแบบเอกสารขนาดใหญ่ PSBPsdImage.Layers คืนค่าทุก Layer ตามลำดับในเอกสาร; PsdImage.ActiveLayer รายงานว่าอันไหนเป็นเลเยอร์ที่ทำงานอยู่Layer เปิดเผย Name, Bounds, Opacity, IsVisible และ BlendModeKey (BlendMode)Layer.ChannelInformation และ Layer.LayerMaskData เปิดเผยเมทาดาต้าช่องและมาสก์สำหรับการตรวจสอบเชิงลึกLayer.ChannelsCount รายงานว่ามีช่องภาพกี่ช่องที่เลเยอร์บรรจุLayer.Name, Layer.Left/Top/Right/Bottom และ Layer.BlendModeKey สามารถตั้งค่าโดยตรงได้PsdImage.Save(filePath) หรือ PsdImage.Save(stream) จะบันทึกเอกสารที่แก้ไขแล้วกลับไปยังดิสก์Image.Load ยืนยันว่าการแก้ไขทำงานแบบราวด์-ทริปอย่างถูกต้องNotSupportedException หากตั้งค่า — การสร้างนี้รองรับการแก้ไขเฉพาะ metadata เท่านั้น ไม่ใช่การสร้างใหม่เต็มรูปแบบPsdImage.ImageResources และ GlobalLayerResources เปิดเผยคอลเลกชัน ResourceBlock/LayerResourcePsdImage.GlobalLayerMaskInfo รายงานข้อมูลมาสก์เลเยอร์ระดับเอกสารทั้งหมดPsdImage.IsFlatten และ HasTransparencyData รายงานแฟล็กระดับเอกสารPsdLoadException และ PsdSaveException แสดงข้อผิดพลาดการโหลด/บันทึกพร้อมข้อความที่ชัดเจนโหลดไฟล์ด้วย Image.Load แล้วแคสต์ผลลัพธ์เป็น PsdImage เพื่อใช้สมาชิกเฉพาะของ PSD
using var image = (PsdImage)Image.Load("test.psd");
Console.WriteLine($"Width: {image.Width}, Channels: {image.ChannelsCount}, Layers: {image.Layers.Length}");
Layer layer = image.Layers[0];
Console.WriteLine($"Bounds: {layer.Bounds}, BlendMode: {layer.BlendModeKey}, Opacity: {layer.Opacity}, Visible: {layer.IsVisible}");
ชื่อเลเยอร์, ขอบเขต, และโหมดผสมสามารถเปลี่ยนแปลงได้ในที่เดิมและบันทึกกลับไปยังดิสก์
using (var image = (PsdImage)Image.Load("test.psd"))
{
image.Layers[0].Name = "Renamed layer";
image.Layers[0].Left = 10;
image.Layers[0].Top = 20;
image.Layers[0].Right = 40;
image.Layers[0].Bottom = 60;
image.Layers[0].BlendModeKey = BlendMode.Multiply;
image.Save("edited.psd");
}
using var reloaded = (PsdImage)Image.Load("edited.psd");
Console.WriteLine($"Name: {reloaded.Layers[0].Name}, BlendMode: {reloaded.Layers[0].BlendModeKey}");
ข้อมูลช่องสามารถอ่านได้แต่ไม่สามารถกำหนดค่าใหม่ได้ — การพยายามกำหนดค่านั้นจะทำให้เกิด NotSupportedException.
using var image = (PsdImage)Image.Load("test.psd");
Layer layer = image.Layers[0];
ChannelInformation[] channelInformation = layer.ChannelInformation;
Console.WriteLine($"Channel count: {layer.ChannelsCount}, First channel length: `NotSupportedException`");
// layer.ChannelInformation = channelInformation; // throws NotSupportedException
Aspose.PSD FOSS for .NET มีใบอนุญาตแบบ MIT. คุณสามารถใช้, แก้ไข, และแจกจ่ายซ้ำได้ภายใต้เงื่อนไขของใบอนุญาต MIT, รวมถึงในผลิตภัณฑ์เชิงพาณิชย์.
ดูส่วนการติดตั้งด้านบนสำหรับคำสั่งการติดตั้งปัจจุบัน.
มันโหลดและบันทึกไฟล์ PSD และ PSB (เอกสารขนาดใหญ่ของ Photoshop) ได้ ไม่ได้ทำการเรนเดอร์หรือส่งออกข้อมูลพิกเซลเป็นรูปแบบเรสเตอร์อื่น เช่น PNG หรือ JPEG.
PsdImage (เป็นซับคลาสของ Image). โหลดเอกสารด้วย PsdImage.Load จากนั้นอ่านคอลเลกชัน Layers และคุณสมบัติส่วนหัวของมัน.
ใช่ — Layer เปิดเผยตัวตั้งค่าที่ทำงานได้สำหรับคุณสมบัติบางอย่าง เช่น ความมองเห็นและชื่อ และ PsdImage.Layers เองมีตัวตั้งค่าที่ทำงานได้สำหรับการแทนที่คอลเลกชัน คุณสมบัติเฉพาะบางอย่าง (ข้อมูลช่อง, ข้อมูลมาสก์, ช่วงการผสมสี, และบางทรัพยากรระดับเอกสาร) เป็นแบบอ่านอย่างเดียวในรุ่น FOSS นี้และจะโยน NotSupportedException หากตั้งค่า.