1. ผลิตภัณฑ์
  2.   Aspose.PSD
  3.   Aspose.PSD FOSS for .NET

Aspose.PSD FOSS สำหรับ .NET

ไลบรารี .NET แบบโอเพนซอร์สสำหรับการโหลด, ตรวจสอบ, และบันทึกไฟล์ PSD/PSB พร้อมการเข้าถึงเมตาดาต้าชั้น. ได้รับอนุญาตแบบ MIT, ไม่จำเป็นต้องใช้ Adobe Photoshop.

ไลบรารี .NET แบบโอเพนซอร์สสำหรับไฟล์ PSD/PSB

Aspose.PSD FOSS for .NET เป็นไลบรารี C# ฟรีที่ได้รับใบอนุญาต MIT, pure สำหรับการโหลด, ตรวจสอบ, และบันทึกไฟล์ Adobe Photoshop PSD และ PSB โดยไม่ต้องการ Adobe Photoshop หรือใด ๆ runtime ที่เป็นกรรมสิทธิ์. มันเปิดเผย API ขนาดเบาและสแตนด์อโลนที่มุ่งเน้นที่ 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.

โหลดและตรวจสอบไฟล์ PSD/PSB

  • Image.Load(filePath) หรือ Image.Load(stream) เปิดไฟล์และคืนค่า Image ซึ่งต้องแคสท์เป็น PsdImage เพื่อเข้าถึงข้อมูลเฉพาะของ PSD
  • PsdImage.Width, Height และ Size รายงานขนาดของแคนวาส
  • PsdImage.ColorMode (ColorModes), BitsPerChannel และ Compression (CompressionMethod) อธิบายวิธีการเข้ารหัสข้อมูลพิกเซล
  • PsdImage.Version (PsdVersion) แยกแยะระหว่าง PSD มาตรฐานกับรูปแบบเอกสารขนาดใหญ่ PSB

ตรวจสอบและจัดทำแคตาล็อกไฟล์การออกแบบ

  • ตรวจสอบชุดไฟล์การออกแบบก่อนส่งต่อให้กระบวนการ downstream
  • สร้างแคตตาล็อกสินทรัพย์ขนาดเบาที่มีข้อมูลมิติและโหมดสีของ PSD/PSB
  • ตรวจจับไฟล์ PSB (large-document) ที่ต้องการการจัดการที่แตกต่างจาก PSD มาตรฐาน

ทำงานกับเลเยอร์

  • PsdImage.Layers คืนค่าทุก Layer ตามลำดับในเอกสาร; PsdImage.ActiveLayer รายงานว่าอันไหนเป็นเลเยอร์ที่ทำงานอยู่
  • แต่ละ Layer เปิดเผย Name, Bounds, Opacity, IsVisible และ BlendModeKey (BlendMode)
  • Layer.ChannelInformation และ Layer.LayerMaskData เปิดเผยเมทาดาต้าช่องและมาสก์สำหรับการตรวจสอบเชิงลึก
  • Layer.ChannelsCount รายงานว่ามีช่องภาพกี่ช่องที่เลเยอร์บรรจุ

โครงสร้างชั้นการตรวจสอบ

  • ตรวจสอบโครงสร้างเลเยอร์ของไฟล์ PSD โดยไม่ต้องเปิด Photoshop
  • สร้างรายงานชื่อเลเยอร์, การมองเห็น, และโหมดการผสมสำหรับการตรวจทบทวนการออกแบบ
  • ระบุเลเยอร์ที่ซ่อนหรือมีความทึบศูนย์ที่เหลือจากการแก้ไขก่อนหน้า

แก้ไขข้อมูลเมตาเลเยอร์พื้นฐาน

  • Layer.Name, Layer.Left/Top/Right/Bottom และ Layer.BlendModeKey สามารถตั้งค่าโดยตรงได้
  • PsdImage.Save(filePath) หรือ PsdImage.Save(stream) จะบันทึกเอกสารที่แก้ไขแล้วกลับไปยังดิสก์
  • การโหลดไฟล์ที่บันทึกไว้ใหม่ด้วย Image.Load ยืนยันว่าการแก้ไขทำงานแบบราวด์-ทริปอย่างถูกต้อง
  • คุณสมบัติที่ไม่ได้ระบุไว้ข้างต้น (ข้อมูลช่อง, ข้อมูลมาสก์, ช่วงการผสม, ทรัพยากรภาพ) จะทำให้เกิด NotSupportedException หากตั้งค่า — การสร้างนี้รองรับการแก้ไขเฉพาะ metadata เท่านั้น ไม่ใช่การสร้างใหม่เต็มรูปแบบ

การแก้ไขที่เบาและสคริปต์ได้

  • เปลี่ยนชื่อเลเยอร์แบบโปรแกรมเมติกเป็นส่วนหนึ่งของกระบวนการจัดระเบียบไฟล์อัตโนมัติ
  • ปรับตำแหน่งหรือขนาดกล่องขอบเขตของเลเยอร์โดยไม่ใช้เครื่องมือออกแบบ
  • อัปเดตโหมดผสมเป็นชุดในหลายไฟล์เพื่อความสอดคล้อง

ตรวจสอบบล็อกทรัพยากรและสถานะเอกสาร

  • PsdImage.ImageResources และ GlobalLayerResources เปิดเผยคอลเลกชัน ResourceBlock/LayerResource
  • PsdImage.GlobalLayerMaskInfo รายงานข้อมูลมาสก์เลเยอร์ระดับเอกสารทั้งหมด
  • PsdImage.IsFlatten และ HasTransparencyData รายงานแฟล็กระดับเอกสาร
  • PsdLoadException และ PsdSaveException แสดงข้อผิดพลาดการโหลด/บันทึกพร้อมข้อความที่ชัดเจน

วินิจฉัยและตรวจสอบ

  • วินิจฉัยว่าทำไมไฟล์ PSD เฉพาะไฟล์หนึ่งถึงไม่สามารถโหลดได้ โดยใช้ข้อยกเว้นที่ระบุประเภทแทนข้อผิดพลาดทั่วไป
  • ตรวจสอบว่าไฟล์ถูกบันทึกในรูปแบบแบน (flattened) หรือไม่ก่อนดำเนินการต่อ
  • ตรวจสอบบล็อกทรัพยากรที่ฝังอยู่สำหรับเมทาดาต้าระดับฟอร์แมต

โหลดไฟล์ PSD และตรวจสอบเลเยอร์ของมัน

โหลดไฟล์ด้วย 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, รวมถึงในผลิตภัณฑ์เชิงพาณิชย์.

ฉันจะติดตั้ง Aspose.PSD FOSS for .NET อย่างไร?

ดูส่วนการติดตั้งด้านบนสำหรับคำสั่งการติดตั้งปัจจุบัน.

รูปแบบใดบ้างที่ Aspose.PSD FOSS for .NET สามารถอ่านและเขียนได้?

มันโหลดและบันทึกไฟล์ PSD และ PSB (เอกสารขนาดใหญ่ของ Photoshop) ได้ ไม่ได้ทำการเรนเดอร์หรือส่งออกข้อมูลพิกเซลเป็นรูปแบบเรสเตอร์อื่น เช่น PNG หรือ JPEG.

คลาสหลักที่เป็นจุดเริ่มต้นคืออะไร?

PsdImage (เป็นซับคลาสของ Image). โหลดเอกสารด้วย PsdImage.Load จากนั้นอ่านคอลเลกชัน Layers และคุณสมบัติส่วนหัวของมัน.

ฉันสามารถแก้ไขเมตาดาต้าของเลเยอร์ได้หรือไม่?

ใช่ — Layer เปิดเผยตัวตั้งค่าที่ทำงานได้สำหรับคุณสมบัติบางอย่าง เช่น ความมองเห็นและชื่อ และ PsdImage.Layers เองมีตัวตั้งค่าที่ทำงานได้สำหรับการแทนที่คอลเลกชัน คุณสมบัติเฉพาะบางอย่าง (ข้อมูลช่อง, ข้อมูลมาสก์, ช่วงการผสมสี, และบางทรัพยากรระดับเอกสาร) เป็นแบบอ่านอย่างเดียวในรุ่น FOSS นี้และจะโยน NotSupportedException หากตั้งค่า.

  

ทรัพยากรสนับสนุนและการเรียนรู้

 ภาษาไทย