אוטומציה של החלפת אובייקטים חכמים עוזרת לך ליצור שינויים באותו תבנית Photoshop עם תמונות שונות. Aspose.PSD עבור .NET אתה יכול להעלות PSD, לזהות שכבות אבו חכם, להחליף את התוכן המובנה שלהם עם תמונה חדשה, ולשמור את המסמך המתעדכן.
דרישות
- .NET 6 או מאוחר יותר
- נוגט :
Aspose.PSD
dotnet add package Aspose.PSD
להחליף את האובייקט החכם הראשון ב- PSD
דוגמה זו מחזקת את ה-PSD, מוצאת את הראשון SmartObjectLayer
, להחליף את התוכן שלה עם PNG או JPEG, לעדכן את השכבה, ולשמור את PSD ו- Preview P NG.
// 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 ואת הזיכרון. - Validation: Export a PNG preview after replacement to confirm alignment and scaling before distributing PSDs.
- התגובות*: אם מסמך אינו מכיל אובייקטים חכמים, נכשל במהירות עם שגיאה ברורה או לפספס את הקובץ במצב המשלוח.
עם דפוסים אלה אתה יכול לבנות צינורות תבנית PSD אמינות אשר להחליף אובייקטים חכמים בקנה מידה ולשמור משלוחים מעודכנים ללא פתיחת Photoshop.