วิธีทำงานกับ Aspose.PSD FOSS Core API ใน .NET
Aspose.PSD FOSS สำหรับ .NET โหลดและตรวจสอบโครงสร้างเอกสาร PSD/PSB ผ่าน PsdImage ซึ่งเป็นคลาสย่อยของ Image. บทความนี้ครอบคลุมการโหลดเอกสาร การอ่านส่วนหัวและทรัพยากรภาพ และการบันทึกกลับไปยังดิสก์.
คู่มือแบบขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildขั้นตอนที่ 2: นำเข้าคลาสที่จำเป็น
using Aspose.PSD.FileFormats.Psd;ขั้นตอนที่ 3: โหลดเอกสาร PSD/PSB
PsdImage.Load เปิดเอกสารจากเส้นทางไฟล์หรือสตรีม:
using var image = PsdImage.Load("input.psd");ขั้นตอน 4: ตรวจสอบส่วนหัวของเอกสาร
PsdImage แสดงฟิลด์ส่วนหัวที่อ่านจากเอกสารที่แยกวิเคราะห์: Width, Height, BitsPerChannel, ColorMode (ค่า ColorModes), และ Compression (ค่า CompressionMethod):
Console.WriteLine($"{image.Width}x{image.Height}, {image.BitsPerChannel} bpc");
Console.WriteLine($"Color mode: {image.ColorMode}"); // e.g. ColorModes.Rgb
Console.WriteLine($"Compression: {image.Compression}"); // e.g. CompressionMethod.RLE
Console.WriteLine($"Flattened: {image.IsFlatten}");ColorModes มีค่า ได้แก่ Bitmap, Grayscale, Indexed, Rgb และ Cmyk, รวมถึงค่าอื่น ๆ (Multichannel, Duotone, Lab). ค่า CompressionMethod มี Raw, RLE, ZipWithoutPrediction, และรูปแบบ ZIP-with-prediction.
ขั้นตอน 5: อ่านบล็อกทรัพยากรภาพ
ImageResources คืนค่ารายการ ResourceBlock ที่แยกวิเคราะห์ของเอกสาร. แต่ละบล็อกแสดง ID, Name, และ Size:
foreach (var resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}ImageResources เป็นแบบอ่านอย่างเดียวในรุ่น FOSS นี้ — การกำหนดค่าให้มันจะทำให้เกิดข้อผิดพลาด NotSupportedException (ดูข้อจำกัดที่ทราบใน FAQ).
ขั้นตอน 6: บันทึกเอกสาร
image.Save("output.psd");ปัญหาทั่วไปและวิธีแก้ไข
PsdLoadException เมื่อโหลดไฟล์. อินพุตไม่ใช่เอกสาร PSD/PSB ที่ถูกต้อง, หรือส่วนหัวของมันล้มเหลวในการตรวจสอบความถูกต้อง. ยืนยันว่าไฟล์เป็นไฟล์ PSD/PSB ของแท้ก่อนทำการโหลด.
NotSupportedException เมื่อกำหนด ImageResources or GlobalLayerResources. ตัวตั้งค่านี้ไม่รองรับในรุ่น FOSS นี้. ให้ถือว่า ImageResources เป็นแบบอ่านอย่างเดียว.
ColorMode or Compression พิมพ์เป็นค่าตัวเลขแทนชื่อ. แปลง property ให้เป็นประเภท enum อย่างชัดเจน หรือใช้ .ToString(), เพื่อให้ได้ชื่อที่อ่านได้ (ColorModes.Rgb, ไม่ใช่ 3).
คำถามที่พบบ่อย
ฉันสามารถโหลดไฟล์ PSD จากสตรีมแทนการใช้เส้นทางไฟล์ได้หรือไม่?
ได้ — PsdImage.Load มีการโอเวอร์โหลดที่รับค่า Stream.
ImageResources มีข้อมูลเลเยอร์หรือไม่?
ไม่. ImageResources เก็บบล็อกทรัพยากรระดับเอกสาร (แยกวิเคราะห์จากส่วนทรัพยากรภาพของ PSD) ข้อมูลระดับเลเยอร์จะถูกอ่านผ่าน PsdImage.Layers — ดู การทำงานกับเลเยอร์.
PsdImage.Version เป็นเวอร์ชันของรูปแบบไฟล์ PSD หรือไม่?
ไม่. PsdImage.Version รายงานหมายเลขเวอร์ชัน API ภายในที่เข้ากันได้กับ Aspose.PSD (ปัจจุบันคือ 6) — ซึ่งไม่เกี่ยวข้องกับว่าไฟล์ที่โหลดเป็น PSD หรือ PSB.