การแก้ไขปัญหา Aspose.PSD FOSS for .NET
การแก้ไขปัญหา Aspose.PSD FOSS สำหรับ .NET
หน้านี้ครอบคลุมปัญหาที่พบบ่อยที่สุดที่พบเมื่อทำการโหลด, ตรวจสอบ, และบันทึกเอกสาร PSD/PSB ด้วย Aspose.PSD FOSS สำหรับ .NET.
ปัญหาในการโหลด
PsdLoadException พร้อมข้อความเกี่ยวกับเวอร์ชันที่ไม่รองรับ
ฟิลด์เวอร์ชัน PSD ที่ระบุในไฟล์ไม่ใช่ค่า PSD มาตรฐานหรือค่า PSB สำหรับเอกสารขนาดใหญ่. กรุณายืนยันว่าไฟล์เป็นเอกสาร PSD/PSB ที่แท้จริงและไม่เสียหายก่อนทำการโหลด:
try
{
using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Not a valid PSD/PSB file: {ex.Message}");
}PsdLoadException เกี่ยวกับความยาวส่วนที่เกินขอบเขต
ฟิลด์ความยาวภายในของไฟล์ไม่สอดคล้องกับขนาดจริง — สิ่งนี้มักหมายความว่าไฟล์ถูกตัดหรือเสียหาย, ไม่ได้หมายความว่าไฟล์ใช้โครงสร้างที่ไม่รองรับแต่โดยทั่วไปยังถูกต้อง. ส่งออกไฟล์ใหม่จากแอปพลิเคชันต้นทางและลองอีกครั้ง.
ปัญหาในการบันทึก
PsdSaveException เกี่ยวกับความยาวของสตริง Pascal
ค่าสตริง — ส่วนใหญ่เป็นชื่อเลเยอร์หรือทรัพยากร — มีขนาดเกิน 255 ไบต์ ซึ่งเป็นขนาดสูงสุดที่ฟิลด์สตริง Pascal ของ PSD สามารถเข้ารหัสได้:
layer.Name = layer.Name.Length > 255 ? layer.Name[..255] : layer.Name;
image.Save("output.psd");ปัญหาในการแก้ไข
NotSupportedException ขณะตั้งค่าคุณสมบัติ
คุณสมบัติบางอย่างเป็นแบบอ่านอย่างเดียวในรุ่น FOSS นี้ บน PsdImage: ActiveLayer, ImageResources, GlobalLayerResources, HasTransparencyData. บน Layer: ChannelInformation, LayerMaskData, LayerBlendingRangesData. ปฏิบัติเหล่านี้เป็นแบบรับอย่างเดียว — อย่าพยายามกำหนดค่าให้กับมัน.
ความทึบของเลเยอร์ดูผิดพลาดหลังจากตั้งค่า
Layer.Opacity เป็น byte ในช่วง 0-255 ไม่ใช่เศษส่วน 0.0-1.0 หรือเปอร์เซ็นต์:
layer.Opacity = 200; // approximately 78% opaque, not 200%การลบชั้นไม่เกิดผล
PsdImage.Layers มีตัวตั้งค่าที่ทำงานได้ระดับคอลเลกชัน แต่สมาชิกอาเรย์แต่ละตัวไม่สามารถลบได้โดยตรง — ให้กำหนดค่าใหม่ให้กับอาเรย์ที่กรองทั้งหมด:
image.Layers = image.Layers.Where(l => l.Name != "Unwanted Layer").ToArray();ปัญหาในการติดตั้ง
ไม่พบแพคเกจ
ยืนยันตัวตนที่แน่นอนของแพคเกจ:
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildรายการตรวจสอบการวินิจฉัย
ก่อนเปิดเรื่องสนับสนุน ให้ทำตามรายการตรวจสอบนี้:
- ยืนยันว่าไฟล์เป็น PSD/PSB อย่างแท้จริง — a
PsdLoadExceptionเกี่ยวกับเวอร์ชันที่ไม่รองรับมักหมายความว่าไฟล์ไม่ได้เป็นเอกสาร PSD/PSB ที่แท้จริง. - ตรวจสอบว่า
NotSupportedException— คุณอาจกำลังตั้งค่าหนึ่งใน 7 คุณสมบัติอ่านอย่างเดียวที่ระบุไว้ข้างต้นแทนที่จะอ่านมัน. - Verify
Opacityอยู่ในช่วง 0-255, ไม่ใช่ 0.0-1.0 หรือ 0-100. - เก็บค่า string ให้ไม่เกิน 255 ไบต์ ก่อนบันทึก, เพื่อหลีกเลี่ยง
PsdSaveException. - Call
image.Saveหลังจากการแก้ไขทุกครั้ง — การเปลี่ยนแปลงต่อLayerอินสแตนซ์จะไม่คงอยู่จนกว่าเอกสารจะถูกบันทึก.