در این مقاله یاد می گیرید که چگونه لایه ها را پیدا کنید و متن یا تصویر لایه را در فایل های PSD فتوشاپ به صورت پویا با استفاده از C#.NET به روز کنید.

PSD فرمت پیش‌فرضی است که Adobe Photoshop برای ذخیره اسنادش در ساختاری چند لایه استفاده می‌کند که در آن هر لایه حاوی متن، تصاویر، اشیاء گرافیکی و سایر عناصر پشتیبانی‌شده است. ممکن است زمانی پیش بیاید که شما یک قالب PSD دارید و باید چندین تصویر حاصل را با پر کردن لایه‌های متن و تصویر در قالب ایجاد کنید. نمونه ای از چنین سناریویی ایجاد کارت های کارمند در یک سازمان است. به منظور خودکار کردن این فرآیند، من به شما نشان خواهم داد که چگونه:

کتابخانه سی شارپ برای یافتن و به‌روزرسانی لایه‌های PSD

Aspose.PSD for .NET اجازه می دهد تا فایل های PSD را بدون نصب Adobe Photoshop یا Illustrator ایجاد و اصلاح کنید. API در سناریویی که باید لایه‌های PSD را به‌صورت پویا با استفاده از C# یا VB.NET به‌روزرسانی کنید، مفید است. می توانید API را با استفاده از NuGet Package Manager نصب کنید یا به صورت دستی DLLs آن را دانلود و به آن ارجاع دهید.

یافتن و به روز رسانی لایه های متنی در فایل های PSD با استفاده از سی شارپ

Aspose.PSD for .NET به شما امکان می دهد با استفاده از نام لایه لایه مورد نظر را در فایل های PSD پیدا کنید. هنگامی که لایه را پیدا کردید، می توانید محتوای آن را به روز کنید. مراحل زیر برای یافتن و به روز رسانی یک لایه متن در یک فایل PSD است.

  • یک نمونه از کلاس PsdImage ایجاد کنید و آن را با مسیر فایل PSD مقداردهی کنید.
  • با استفاده از ویژگی PsdImage.Layers به لایه‌های موجود در PSD دسترسی پیدا کنید.
  • نام نمایشی هر لایه را مطابقت دهید تا لایه مورد نظر در شیء 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");
}
//-------------------FindLayer()-------------
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 با استفاده از سی شارپ

به منظور مقابله با اشیاء گرافیکی مانند تصاویر، Aspose.PSD برای دات نت کلاس Graphics را در معرض نمایش قرار می دهد. این کلاس برای پاک کردن یا ترسیم گرافیک در لایه های PSD استفاده می شود. مراحل زیر برای پیدا کردن یک لایه PSD و به روز رسانی تصویر آن است.

  • یک شی از کلاس PsdImage برای بارگذاری فایل PSD ایجاد کنید.
  • لایه را در فایل PSD از شیء PsdImage.Layers پیدا کنید.
  • تصویری را که می خواهید در لایه در یک شی Stream بکشید بارگذاری کنید.
  • یک شی لایه جدید ایجاد کنید و آن را با شی Stream ایجاد شده در مرحله قبل مقداردهی کنید.
  • یک نمونه از کلاس 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");
}
//-------------------FindLayer()-------------
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 فتوشاپ به روز کنید. می توانید با استفاده از documentation در مورد Aspose.PSD برای دات نت بیشتر کاوش کنید.

همچنین ببینید