L’automatisation de remplacement d’objets intelligents vous aide à créer des variations du même modèle Photoshop avec des images différentes. Avec Aspose.PSD pour .NET vous pouvez charger un PSD, localiser les couches de objets inteligents, remplacer leur contenu intégré par une nouvelle image, et sauvegarder le document mis à jour. Les exemples suivants utilisent un code en ligne, courant qui se concentre sur les cas communs.

Principaux

  • .NET 6 ou plus tard
  • Nouveau : Aspose.PSD
dotnet add package Aspose.PSD

Remplacer le premier objet intelligent dans un PSD

Cet exemple charge un PSD, trouve le premier SmartObjectLayer, remplacera son contenu par un PNG ou JPEG, met à jour la couche et sauvegarde le PSD et un préview de 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.");
    }
}

Notes

  • ReplaceContents Il remplace le contenu intégré de l’objet intelligent.
  • UpdateModifiedContent Réfrigérer la couche rendue après le remplacement.
  • Économiser une prévision PNG vous aide à valider le résultat sans ouvrir Photoshop.

Remplacer un objet intelligent par un nom de couche

Utilisez ce modèle lorsque votre modèle a plusieurs objets intelligents et que vous voulez cibler un spécifique par le nom d’affichage.

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

Appelez ça comme ça :

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

Remplacer tous les objets intelligents dans un PSD

Cet exemple traverse toutes les couches d’objets intelligents et les remplacera par la même image. Vous pouvez l’étendre pour cartographier chaque objet intelligent dans un fichier différent.

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

Traiter des objets intelligents liés

Si un objet intelligent est lié à un fichier extérieur, vous pouvez remplacer l’objectif du lien en le pointant sur une nouvelle image sur le disque. 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);
}

Notes

  • Utiliser IsLinked Détecter des objets intelligents liés.
  • SetLinkedFile Mise à jour de la voie extérieure utilisée par la couche.
  • Le fichier lié doit être un format raster soutenu.

Les meilleures pratiques

  • Size d’image: Pour la meilleure qualité, correspond le ratio et la résolution de l’image de remplacement aux limites d’objets intelligents originaux.
  • Gestion des couleurs: Gardez les profils de couleurs cohérents sur les modèles et les actifs de remplacement.
  • Batch automation: réutiliser un chargé RasterImage Lorsque vous remplacez plusieurs couches pour réduire l’I/O et le churn de mémoire.
  • Validation: Exporter une prévision PNG après remplacement pour confirmer l’alignement et l’échelle avant la distribution des PSD.
  • Fallbacks: Si un document n’a pas d’objets intelligents, échouer rapidement avec une erreur claire ou échapper au fichier dans le mode batch.

Avec ces modèles, vous pouvez construire des pipelines de modèle PSD fiables qui remplacent les objets intelligents à l’échelle et enregistrent des livraisons mises à jour sans ouvrir Photoshop.

More in this category