تساعدك تلقائيًا استبدال الكائنات الذكية على إنشاء اختلافات في نفس نموذج Photoshop مع صور مختلفة.مع Aspose.PSD for .NET يمكنك تحميل PSD ، وتحديد طبقات الكيانات ذكية ، واستبدل محتوىها المدمج بالصورة الجديدة ، وحفظ المستند المحدث.
المتطلبات
- .NET 6 أو أحدث
- نوتردام :
Aspose.PSD
dotnet add package Aspose.PSD
استبدال أول كائن ذكي في PSD
هذا المثال يحمل PSD ، يجد الأول SmartObjectLayer
، يحل محل محتواه بـ PNG أو JPEG ، وتحديث الطبقة ، ويحفظ PSD وPNG مسبقًا.
// File: Program.cs
using System;
using System.IO;
using System.Linq;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Psd.Layers.SmartObjects;
using Aspose.PSD.ImageOptions;
class Program
{
static void Main()
{
var inputPsd = "template.psd";
var replacement = "replacement.png"; // any raster format supported by Aspose.PSD
var outputPsd = "output.psd";
var outputPreview = "output-preview.png";
if (!File.Exists(inputPsd) || !File.Exists(replacement))
{
Console.WriteLine("Missing input files.");
return;
}
using (var psd = (PsdImage)Image.Load(inputPsd))
{
// Find the first smart object layer
var smart = psd.Layers.OfType<SmartObjectLayer>().FirstOrDefault();
if (smart == null)
{
Console.WriteLine("No smart object layer found in PSD.");
}
else
{
// Load the replacement raster and replace contents
using var newContent = (RasterImage)Image.Load(replacement);
// Replace embedded contents and update the smart object
smart.ReplaceContents(newContent);
smart.UpdateModifiedContent();
}
// Save updated PSD
psd.Save(outputPsd);
// Optional preview export
psd.Save(outputPreview, new PngOptions());
}
Console.WriteLine("Done.");
}
}
ملاحظات
ReplaceContents
يستبدل المحتوى المدمج للكائن الذكي.UpdateModifiedContent
وتجديد الطبقة بعد استبدالها.- توفير نظرة PNG مسبقة يساعدك على تأكيد النتيجة دون فتح Photoshop.
استبدال الكائن الذكي باستخدام اسم الطبقة
استخدم هذا النموذج عندما يحتوي قالبك على العديد من الكائنات الذكية وتريد استهداف واحد محدد باستخدام اسم العرض.
using System.Linq;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Psd.Layers.SmartObjects;
static void ReplaceByName(string psdPath, string layerName, string replacementPath, string outputPsd)
{
using var psd = (PsdImage)Image.Load(psdPath);
var smart = psd.Layers
.OfType<SmartObjectLayer>()
.FirstOrDefault(l => string.Equals(l.DisplayName, layerName, StringComparison.OrdinalIgnoreCase));
if (smart == null)
throw new InvalidOperationException($"Smart object layer '{layerName}' not found.");
using var newContent = (RasterImage)Image.Load(replacementPath);
smart.ReplaceContents(newContent);
smart.UpdateModifiedContent();
psd.Save(outputPsd);
}
أسميها هكذا :
ReplaceByName("template.psd", "Product Image", "new-photo.jpg", "output.psd");
استبدال جميع الأشياء الذكية في PSD
هذا المثال يمر عبر جميع طبقات الكائنات الذكية ويحل محل كل منها بنفس الصورة.يمكنك توسيعها إلى خريطة كل كائن ذكي إلى ملف مختلف.
using System.Linq;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Psd.Layers.SmartObjects;
static void ReplaceAll(string psdPath, string replacementPath, string outputPsd)
{
using var psd = (PsdImage)Image.Load(psdPath);
using var newContent = (RasterImage)Image.Load(replacementPath);
var smartLayers = psd.Layers.OfType<SmartObjectLayer>().ToList();
if (smartLayers.Count == 0)
throw new InvalidOperationException("No smart object layers found.");
foreach (var smart in smartLayers)
{
smart.ReplaceContents(newContent);
smart.UpdateModifiedContent();
}
psd.Save(outputPsd);
}
التعامل مع الأشياء الذكية المرتبطة
إذا تم ربط الكائن الذكي بملف خارجي، يمكنك استبدال الهدف الرابط عن طريق إشارته إلى صورة جديدة على القرص. UpdateModifiedContent
.
using System.Linq;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Psd.Layers.SmartObjects;
static void ReplaceLinked(string psdPath, string newLinkedFilePath, string outputPsd)
{
using var psd = (PsdImage)Image.Load(psdPath);
var linked = psd.Layers
.OfType<SmartObjectLayer>()
.FirstOrDefault(l => l.IsLinked);
if (linked == null)
throw new InvalidOperationException("No linked smart object layer found.");
// Point the layer to a new external file
linked.SetLinkedFile(newLinkedFilePath);
// Refresh layer rendering
linked.UpdateModifiedContent();
psd.Save(outputPsd);
}
ملاحظات
- استخدام
IsLinked
اكتشاف الكائنات الذكية المرتبطة. SetLinkedFile
تحديث المسار الخارجي المستخدم من قبل الطبقة.- يجب أن يكون الملف المرتبط تنسيق Raster مدعوم.
أفضل الممارسات
- أحجام الصورة: للحصول على أفضل جودة، يتماشى مع نسبة الجانب من صورة الاستبدال والقرار مع حدود الكائنات الذكية الأصلية.
- إدارة الألوان: الحفاظ على ملفات ملونة متسقة بين القوالب والأصول الاستبدادية.
- Batch Automation: إعادة استخدام محمول
RasterImage
عند استبدال العديد من الطبقات للحد من I / O والذاكرة. - التصديق: تصدير نظرة PNG بعد الاستبدال لتأكيد التوافق والتوسع قبل توزيع PSDs.
- العودة الخاطئة: إذا لم يكن لديك وثيقة ذات كائنات ذكية، فشل بسرعة مع خطأ واضح أو تفريغ الملف في وضع المجموعة.
باستخدام هذه النماذج ، يمكنك بناء أنابيب نموذجية PSD موثوقة تستبدل الأشياء الذكية على نطاق واسع وتخزين إمدادات محدثة دون فتح Photoshop.