في هذه المقالة ، ستتعلم كيفية العثور على الطبقات وتحديث نص الطبقة أو الصورة داخل ملفات PSD في Photoshop ديناميكيًا باستخدام C# .NET.

PSD هو التنسيق الافتراضي الذي يستخدمه Adobe Photoshop لحفظ مستنداته في بنية متعددة الطبقات حيث تحتوي كل طبقة على النص والصور والكائنات الرسومية والعناصر المدعومة الأخرى. قد تكون هناك حالة عندما يكون لديك قالب PSD وتحتاج إلى إنشاء العديد من الصور الناتجة عن طريق ملء طبقات النص والصورة داخل القالب. مثال على مثل هذا السيناريو هو إنشاء بطاقات الموظفين داخل المنظمة. لأتمتة هذه العملية ، سأوضح لك كيفية:

مكتبة C# للبحث عن طبقات PSD وتحديثها

Aspose.PSD for .NET يسمح بإنشاء وتعديل ملفات PSD بدون تثبيت Adobe Photoshop أو Illustrator. يمكن أن تكون واجهة برمجة التطبيقات سهلة الاستخدام في السيناريو حيث تحتاج إلى تحديث طبقات 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");
}
//------------------- 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 باستخدام C#

من أجل التعامل مع الكائنات الرسومية مثل الصور ، يعرض Aspose.PSD for .NET فئة الرسومات. تُستخدم هذه الفئة لمسح الرسومات أو رسمها داخل طبقات PSD. فيما يلي خطوات البحث عن طبقة PSD وتحديث صورتها.

  • قم بإنشاء كائن من فئة PsdImage لتحميل ملف PSD.
  • ابحث عن الطبقة في ملف PSD من كائن PsdImage.Layers.
  • قم بتحميل الصورة التي تريد رسمها في الطبقة في كائن دفق.
  • قم بإنشاء كائن طبقة جديد وقم بتهيئته باستخدام كائن Stream الذي تم إنشاؤه في الخطوة السابقة.
  • قم بإنشاء مثيل لفئة الرسومات وقم بتهيئته بطبقة ليتم استبدالها.
  • امسح الطبقة باستخدام طريقة 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#

استنتاج

في هذه المقالة ، رأينا كيفية البحث عن الطبقات وتحديثها في ملف Photoshop (PSD) باستخدام C#. يوضح الدليل التدريجي وعينات التعليمات البرمجية كيفية العثور على الطبقات وتحديث نصها أو صورتها في ملفات Photoshop PSD. يمكنك استكشاف المزيد حول Aspose.PSD for .NET باستخدام التوثيق.

أنظر أيضا