ในบทความนี้ คุณจะได้เรียนรู้วิธีค้นหาเลเยอร์และอัปเดตข้อความหรือรูปภาพของเลเยอร์ภายในไฟล์ 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 โดยใช้ C#

ต่อไปนี้คือไฟล์ PSD ผลลัพธ์ที่มีเลเยอร์ข้อความที่อัปเดต:

อัปเดตเลเยอร์ข้อความใน PSD โดยใช้ C#

ค้นหาและอัปเดตเลเยอร์รูปภาพในไฟล์ 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 หลังจากอัปเดตเลเยอร์รูปภาพโดยใช้รหัสที่กล่าวถึงข้างต้น:

อัปเดตเลเยอร์รูปภาพใน PSD โดยใช้ C#

บทสรุป

ในบทความนี้ เราได้เห็นวิธีค้นหาและอัปเดตเลเยอร์ในไฟล์ Photoshop (PSD) โดยใช้ C# คำแนะนำทีละขั้นตอนและตัวอย่างโค้ดจะสาธิตวิธีค้นหาเลเยอร์และอัปเดตข้อความหรือรูปภาพในไฟล์ Photoshop PSD คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ Aspose.PSD for .NET โดยใช้ เอกสารประกอบ

ดูสิ่งนี้ด้วย