Аутоматизација паметног објекта замена помаже вам да креирате варијације истог шаблона Пхотосхоп са различитим сликама. са Аспосе.ПСД за .НЕТ можете да преузмете ПСС, локализујете паметне слојеве објеката, замените њихово уграђено садржај новим сликом и сачувате ажуриран документ.

Принципи

  • .NET 6 или касније
  • НУГЕТ : Aspose.PSD
dotnet add package Aspose.PSD

Замена првог паметног објекта у ПСД-у

Овај пример наплаћује ПСД, налази прву SmartObjectLayer, замењује његов садржај ПНГ или ЈПЕГ, ажурира слој и сачува ПСД и преглед ПНГ.

// 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 освежава слој који се испоручује након замене.
  • Сачувајући ПНГ преглед помаже вам да валидирате резултат без отварања Пхотосхоп-а.

Замена паметног објекта слојним именом

Користите овај образац када ваш шаблон има више паметних објеката и желите да циљате одређену по именом приказивања.

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

Nazovite ga ovako:

ReplaceByName("template.psd", "Product Image", "new-photo.jpg", "output.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 ажурирају спољашњи пут који користи слој.
  • Везан датотека мора бити подржани растер формат.

Најбоља пракса

  • Слика величине: За најбољу квалитет, одговарајућа замена слике аспект однос и резолуција на оригиналне паметне објекте границе.
  • Управљање бојама: Чувајте профиле боје конзистентне широм шаблона и замена имовине.
  • Бацх аутоматизација: Поново користите оптерећени RasterImage када замените многе слојеве како бисте смањили И/О и меморију.
  • ** Валидација**: Експортирајте ПНГ преглед након замене како би се потврдила усклађеност и скалирање пре дистрибуције ПСД-а.
  • Фаллбацк: Ако документ нема паметне објекте, брзо не успева са јасном грешком или прекида датотеку у режиму бацх.

Са овим обрасцима можете изградити поуздане ПСД шаблоне цеви који замењују паметне објекте на скали и сачувати ажуриране испоруке без отварања Пхотосхоп-а.

More in this category