ภาพรวม
เพื่อออโตเมติกการแก้ไขรูปแบบ PSD และเปลี่ยนไฟล์ PSD โดยไม่ต้องใช้ Adobe® Photoshop® คุณสามารถใช้ Aspose.PSD API ด้านล่างได้ มีโค้ดย่อ C# และ .NET ที่ช่วยให้คุณสามารถแก้ไขไฟล์ PSD
การใช้ PSD Layer และ Vector Masks เราสามารถซ่อนและแสดงพิกเซลของชั้นโดยไม่ลบอย่างถาวร หน้ากากเราสเตอร์เรียกอีกชื่อหนึ่งว่าหน้ากากชั้นหรือหน้ากากผู้ใช้ การเข้าถึงหน้ากากแรสเตอร์และเวกเตอร์ใน Aspose.PSD มีทางเข้าผ่านคุณสมบัติเลเยอร์ LayerMaskDataซึ่งสามารถเป็นตัวอย่างของคลาส ‘LayerMaskDataShort’ และ ‘LayerMaskDataFull’ ที่เป็นคลาสลูกของคลาส ‘LayerMaskData’ อย่างน้อยถ้าเลเยอร์มีทั้งหน้ากากแรสเตอร์และเวกเตอร์ จะมีอินสแตนซ์ของ LayerMaskDataFull ถูกนำมา หากเลเยอร์มีเพียงแค่หน้ากากแรสเตอร์หรือเวกเตอร์ จะมีอินสแตนซ์ของ LayerMaskDataShort ถูกนำมา พรอพเพอร์ตี LayerMaskData ถ้าค่าเป็น null แสดงว่าเลเยอร์ไม่มีหน้ากากหรือมีเพียงหน้ากากเวกเตอร์ที่ปิดการใช้งานอย่างเดียว
หน้ากากแรสเตอร์และหน้ากากเวกเตอร์ที่ถูกปิดใช้งาน LayerMaskDataShort หน้ากากราชเทอร์ที่ถูกปิดใข้งาน LayerMaskDataShort หน้ากากแรสเตอร์และหน้ากากเวกเตอร์ LayerMaskDataFull หน้ากากแรสเตอร์ LayerMaskDataShort หน้ากากเวกเตอร์ LayerMaskDataShort หน้ากากเว็คเตอร์ที่ถูกปิดการใช้งาน null (แต่มีทรัพยากรเวกเตอร์) |
---|
วิธีการดึงหน้ากากแรสเตอร์ของเลเยอร์ในไฟล์ PSD?
ต้องมั่นใจก่อนว่าเลเยอร์มีทั้งหน้ากากเวกเตอร์และหน้ากากราชเทอร์:
โค้ดตัวอย่างด้านล่างแสดงวิธีการดึงหน้ากากแรสเตอร์ของเลเยอร์
มิฉะนั้น ประเภทของสมบัติเลเยอร์ LayerMaskData คือ LayerMaskDataShort ในกรณีนี้ มาตรวจสอบว่าเลเยอร์มีหน้ากากแรสเตอร์อย่างเดียวหรือไม่โดยการตรวจสอบสมบัติ Flags ไม่ควรมี LayerMaskFlags.UserMaskFromRenderingOtherData flag มิฉะนั้นหน้ากากก็คือแคชของหน้ากากเวกเตอร์
การดึงโค้ดหน้ากาก:
หากคุณต้องการ ดึงหน้ากากแรสเตอร์ เป็น LayerMaskDataShort (สำหรับการจัดการต่อไป) แม้ว่าทั้งสองหน้ากากจะมีอยู่ LayerMaskDataFull ควรสกัดและแปลงไปเป็น LayerMaskDataShort โค้ดต่อไปนี้สามารถใช้ได้สำหรับทั้งสองกรณี:
การสกัดหน้ากากแรสเตอร์จาก PSD
การตรวจสอบว่าเลเยอร์ในไฟล์ PSD มีหน้ากากแรสเตอร์หรือไม่?
โค้ด C# ต่อไปนี้อาจช่วยให้คุณตรวจสอบว่าเลเยอร์มีหน้ากากแรสเตอร์หรือไม่:
วิธีตรวจสอบว่าหน้ากากแรสเตอร์ถูกนำไปใช้กับ PSD Layer
วิธีการลบ / เพิ่ม / อัปเดตหน้ากากแรสเตอร์ของเลเยอร์ในไฟล์ PSD?
การลบ / เพิ่ม / อัปเดตเพียงแค่ LayerMaskData ไม่เพียงพอสำหรับการบันทึกให้ถูกต้องเพราะช่องไม่ได้รับการอัพเดท แม้ว่าจะสามารถให้การแสดงผลได้อย่างถูกต้อง นี้ไม่ทำให้ช่องหน้ากากเปลี่ยนไป:
ควรใช้วิธีการเพิ่มเลเยอร์ AddLayerMask สำหรับการลบ / เพิ่ม / อัปเดต
นี้จะเพิ่ม / อัปเดตทั้งหน้ากากและช่อง:
นี้จะลบทั้งหน้ากากและช่อง:
การลบหน้ากากแรสเตอร์ของเลเยอร์ในภาพ PSD
ก่อนอื่นเราตรวจสอบว่าหน้ากากเป็นรูปแบบสั้นและหากมันไม่ใช่หนึ่งเวกเตอร์เราสามารถเรียก AddLayerMask method ด้วย null เพื่อลบหน้ากากแรสเตอร์ แต่หากมันเป็นรูปแบบเต็มเราต้องแปลงเป็นรูปแบบสั้นเพื่อทิ้งเฉพาะหน้ากากเวกเตอร์ไว้เพียงอย่างเดียว สำหรับการลบหน้ากากชั้น ข้อมูลนี้เป็นตัวอย่าง
โค้ดตัวอย่างวิธีการลบหน้ากากชั้นจากไฟล์ PSD
การอัปเดตหน้ากากแรสเตอร์ของเลเยอร์ในภาพ PSD
นี่ คือง่ายต่อการกระทำ: หน้ากากเป็นชนิดสั้นเราต้องเปลี่ยน ImageData และ MaskRectangle ถ้าจำเป็น, มิฉะนั้น UserMaskData และ UserMaskRectangle ควรเปลี่ยน โค้ดตัวอย่างนี้สามารถใช้สำหรับการอัปเดตหน้ากากชั้น:
อัปเดต PSD Layer Mask ด้วย C#
นี่คือตัวอย่างของการกระทำที่เป็นไปได้ที่เปลี่ยนหน้ากากแรสเตอร์ อันนี้กลับด้านหน้าของหน้ากากของเลเยอร์:
อัปเดต PSD Layer Mask ด้วย C#
การอัปเดตหน้ากากเวกเตอร์ในไฟล์ PSD เมื่อหน้ากากแรสเตอร์ของเลเยอร์มีอยู่
มันถูกคาดว่าผู้ใช้ได้เปลี่ยนโอปเจ็คเวกเตอร์ไปแล้ว จากนั้นนั้นสามารถอัปเดตหน้ากากเวกเตอร์ได้โดยกระทำการเรียก AddLayerMask ต่อเลเยอร์:
อัปเดต PSD Layer Vector Mask ด้วย C#
การเพิ่มหน้ากากแรสเตอร์ของเลเยอร์ในไฟล์ PSD
ถ้าเลเยอร์ไม่มีหน้ากากเราสามารถเพิ่มหน้ากากแรสเตอร์ที่กำหนดโดยการเรียก AddLayerMask layer method
ถ้าหน้ากากไม่มี UserMaskFromRenderingOtherData** flag หมายความว่ามันมีหน้ากากแรสเตอร์อยู่แล้ว และเราต้องอัปเดตมันตามที่ได้อธิบายไว้ข้างบน มิฉะนั้น หากรูปแบบหน้ากากนี้เป็นรูปแบบสั้นเราจะแปลงเป็นรูปแบบเต็ม หากไม่ เราใช้เหมือนเดิม จากนั้นอัปเดต UserMaskData UserMaskRectangle และคุณสมบัติอื่นๆ ด้วยคุณสมบัติหน้ากากที่กำหนด โค้ดตัวอย่างวิ