ในบทความนี้ คุณจะได้เรียนรู้วิธีค้นหาเลเยอร์และอัปเดตข้อความหรือรูปภาพของเลเยอร์ภายในไฟล์ PSD ของ Photoshop แบบไดนามิกโดยใช้ C# .NET
PSD เป็นรูปแบบเริ่มต้นที่ Adobe Photoshop ใช้ในการบันทึกเอกสารในโครงสร้างแบบหลายเลเยอร์ ซึ่งแต่ละเลเยอร์ประกอบด้วยข้อความ รูปภาพ วัตถุกราฟิก และองค์ประกอบอื่นๆ ที่รองรับ อาจมีบางกรณีเมื่อคุณมีเทมเพลต PSD และคุณจำเป็นต้องสร้างรูปภาพผลลัพธ์หลายภาพโดยการเติมเลเยอร์ข้อความและรูปภาพภายในเทมเพลต ตัวอย่างของสถานการณ์ดังกล่าวคือการสร้างบัตรพนักงานภายในองค์กร เพื่อให้กระบวนการนี้เป็นไปโดยอัตโนมัติ ฉันจะแสดงวิธี:
ไลบรารี C# เพื่อค้นหาและอัปเดตเลเยอร์ PSD
Aspose.PSD for .NET อนุญาตให้สร้างและแก้ไขไฟล์ PSD โดยไม่ต้องติดตั้ง Adobe Photoshop หรือ Illustrator API มีประโยชน์ในสถานการณ์ที่คุณต้องอัปเดตเลเยอร์ PSD แบบไดนามิกโดยใช้ C# หรือ VB.NET คุณสามารถติดตั้ง API โดยใช้ NuGet Package Manager หรือดาวน์โหลดและอ้างอิง DLLs ด้วยตนเอง
ค้นหาและอัปเดตเลเยอร์ข้อความในไฟล์ PSD โดยใช้ C#
Aspose.PSD for .NET ให้คุณค้นหาเลเยอร์ที่ต้องการในไฟล์ PSD โดยใช้ชื่อเลเยอร์ เมื่อคุณพบเลเยอร์แล้ว คุณสามารถอัปเดตเนื้อหาได้ ต่อไปนี้เป็นขั้นตอนในการค้นหาและอัปเดตเลเยอร์ข้อความในไฟล์ PSD
- สร้างอินสแตนซ์ของคลาส PsdImage และเริ่มต้นด้วยพาธของไฟล์ PSD
- เข้าถึงเลเยอร์ใน PSD โดยใช้คุณสมบัติ PsdImage.Layers
- จับคู่ชื่อที่แสดงของแต่ละเลเยอร์เพื่อให้ได้เลเยอร์ที่ต้องการในวัตถุ TextLayer
- อัปเดตข้อความโดยใช้เมธอด TextLayer.UpdateText(String)
- บันทึกรูปภาพที่อัปเดตโดยใช้เมธอด PsdImage.Save(String)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีค้นหาและอัปเดตเลเยอร์ข้อความในไฟล์ PSD โดยใช้ C#
// โหลดไฟล์ PSD
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
// ค้นหาเลเยอร์โดยใช้ชื่อเลเยอร์
var layerToUpdateText = (TextLayer)FindLayer("Name", image);
// วิธีง่ายๆ ในการอัปเดตข้อความ
layerToUpdateText.UpdateText("John Doe");
// บันทึกไฟล์ PSD ที่อัปเดต
image.Save("updated-psd.psd");
}
//------------------- ค้นหาเลเยอร์ () -------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// รับเลเยอร์ aa ในไฟล์ PSD
var layers = image.Layers;
// ค้นหาเลเยอร์ที่ต้องการ
foreach (var layer in layers)
{
// จับคู่ชื่อเลเยอร์
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
ด้านล่างนี้เป็นภาพหน้าจอของไฟล์ PSD อินพุตที่เราใช้ในตัวอย่างนี้:
ต่อไปนี้คือไฟล์ PSD ผลลัพธ์ที่มีเลเยอร์ข้อความที่อัปเดต:
ค้นหาและอัปเดตเลเยอร์รูปภาพในไฟล์ PSD โดยใช้ C#
เพื่อจัดการกับวัตถุกราฟิก เช่น รูปภาพ Aspose.PSD for .NET จะเปิดเผยคลาส Graphics คลาสนี้ใช้เพื่อล้างหรือวาดกราฟิกภายในเลเยอร์ PSD ต่อไปนี้เป็นขั้นตอนในการค้นหาเลเยอร์ PSD และอัปเดตรูปภาพ
- สร้างวัตถุของคลาส PsdImage เพื่อโหลดไฟล์ PSD
- ค้นหาเลเยอร์ในไฟล์ PSD จากวัตถุ PsdImage.Layers
- โหลดรูปภาพที่คุณต้องการวาดในเลเยอร์ในวัตถุ สตรีม
- สร้างวัตถุเลเยอร์ใหม่และเริ่มต้นด้วยวัตถุสตรีมที่สร้างในขั้นตอนก่อนหน้า
- สร้างอินสแตนซ์ของคลาส Graphics และเริ่มต้นด้วยเลเยอร์ที่จะแทนที่
- ล้างเลเยอร์โดยใช้เมธอด Graphics.Clear()
- วาดภาพในเลเยอร์โดยใช้เมธอด Graphics.DrawImage(Image, Rectangle)
- บันทึกไฟล์โดยใช้วิธี PsdImage.Save(String)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีค้นหาและอัปเดตเลเยอร์รูปภาพในไฟล์ PSD โดยใช้ C#
// โหลดไฟล์ PSD
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
// ค้นหาเลเยอร์ที่เราต้องการแทนที่
var layerToReplace = FindLayer("ProfilePicture", image);
using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
{
var newLayer = new Layer(stream);
// การวาดเลเยอร์ใหม่บนเก่า
var graphic = new Graphics(layerToReplace);
graphic.Clear(Color.Empty);
graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
}
// บันทึกไฟล์ PSD ที่อัปเดต
image.Save("updated-psd2.psd");
}
//------------------- ค้นหาเลเยอร์ () -------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// รับเลเยอร์ aa ในไฟล์ PSD
var layers = image.Layers;
// ค้นหาเลเยอร์ที่ต้องการ
foreach (var layer in layers)
{
// จับคู่ชื่อเลเยอร์
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
ต่อไปนี้คือภาพหน้าจอของไฟล์ PSD หลังจากอัปเดตเลเยอร์รูปภาพโดยใช้รหัสที่กล่าวถึงข้างต้น:
บทสรุป
ในบทความนี้ เราได้เห็นวิธีค้นหาและอัปเดตเลเยอร์ในไฟล์ Photoshop (PSD) โดยใช้ C# คำแนะนำทีละขั้นตอนและตัวอย่างโค้ดจะสาธิตวิธีค้นหาเลเยอร์และอัปเดตข้อความหรือรูปภาพในไฟล์ Photoshop PSD คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ Aspose.PSD for .NET โดยใช้ เอกสารประกอบ