Die automatisierte Smart Object Replacement hilft Ihnen, Variationen des gleichen Photoshop-Templates mit unterschiedlichen Bildern zu erstellen. Mit Aspose.PSD für .NET können Sie einen PSD laden, intelligente Objektschichten lokalisieren, ihre eingebauten Inhalte mit einem neuen Bild ersetzen und das aktualisierte Dokument speichern. Die folgenden Beispiele verwenden inline, runable Code, der sich auf gemeinsame Fälle konzentriert.

Voraussetzung

  • .NET 6 oder später
  • Neugier : Aspose.PSD
dotnet add package Aspose.PSD

Ersatz des ersten intelligenten Objekts in einem PSD

Dieses Beispiel laden eine PSD, findet die erste SmartObjectLayer, ersetzt seine Inhalte mit einem PNG oder JPEG, aktualisiert das Layer und speichert den PSD und einen Vorgeschlags-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.");
    }
}

Anmerkungen

  • ReplaceContents ersetzt den eingebetteten Inhalt des intelligenten Objekts.
  • UpdateModifiedContent Erfrischung der Schicht nach dem Ersatz.
  • Mit einem PNG-Vorblick können Sie das Ergebnis validieren, ohne Photoshop zu öffnen.

Ersatz eines intelligenten Objekts durch Layer Name

Verwenden Sie dieses Muster, wenn Ihr Template mehrere intelligente Objekte hat und Sie einen bestimmten mit dem Display-Namen richten möchten.

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);
}

Rufen Sie es so:

ReplaceByName("template.psd", "Product Image", "new-photo.jpg", "output.psd");

Alle intelligenten Objekte in einem PSD ersetzen

Dieses Beispiel läuft durch alle intelligenten Objektschichten und ersetzt jede mit dem gleichen Bild. Sie können es erweitern, um jedes intelligente Object auf eine andere Datei zu mappen.

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);
}

Verarbeitung verbundener intelligenter Objekte

Wenn ein intelligentes Objekt mit einer externen Datei verbunden ist, können Sie den Linkziel ersetzen, indem Sie es auf einen neuen Bild auf dem Disk markieren. 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);
}

Anmerkungen

  • Use IsLinked Um verbundene intelligente Objekte zu erkennen.
  • SetLinkedFile Aktualisieren Sie den von der Schicht verwendeten äußeren Weg.
  • Die verbundene Datei muss ein unterstütztes Raster-Format sein.

Beste Praktiken

  • Bildgröße: Für die beste Qualität entsprechen Ersatzbild Aspekt-Ratio und Auflösung den ursprünglichen Smart Object-Grenzen.
  • Farbmanagement: Farbprofile konsequent über Vorlagen und Ersatzvermögenswerte halten.
  • Batch-Automatisierung: Wiederverwendung eines Laden RasterImage bei der Ersetzung vieler Schichten, um I/O und Speicherkröte zu reduzieren.
  • Validation: Exportieren Sie eine PNG-Vorsicht nach dem Ersatz, um die Anpassung und Skalierung vor der Verteilung von PSDs zu bestätigen.
  • Fallbacks: Wenn ein Dokument keine intelligenten Objekte hat, scheitern Sie schnell mit einem klaren Fehler oder überspringen Sie die Datei im Batch-Modus.

Mit diesen Mustern können Sie zuverlässige PSD-Templating-Pipel herstellen, die intelligente Objekte auf der Skala ersetzen und aktualisierte Versorgungsmöglichkeiten speichern, ohne Photoshop zu öffnen.

More in this category