تساعدك تلقائيًا استبدال الكائنات الذكية على إنشاء اختلافات في نفس نموذج 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.

More in this category