스마트 개체 교체를 자동화하면 다른 이미지와 동일한 Photoshop 템플릿의 변형을 만드는 데 도움이됩니다. Aspose.PSD for .NET를 사용하면 PSD를 충전하고, 스마트 객체 레이어를 찾고, 새 이미지로 내장된 콘텐츠를 대체하고 업데이트 된 문서를 저장할 수 있습니다.
원칙
- .NET 6 또는 이후
- 니게트 :
Aspose.PSD
dotnet add package Aspose.PSD
첫 번째 똑똑한 개체를 PSD에서 대체하십시오.
이 예제는 PSD를 충전하고, 첫 번째를 찾습니다. SmartObjectLayer
, 그것의 콘텐츠를 PNG 또는 JPEG로 대체하고, 레이어를 업데이트하고 PSD 및 사전 보기 PPG를 저장합니다.
// 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
레이어에 의해 사용되는 외부 경로를 업데이트합니다.- 연결된 파일은 지원되는 라스터 형식이어야 합니다.
최고의 관행
- ** 이미지 크기**: 최상의 품질을 위해, 교체 이미지 측면 비율과 원래의 스마트 개체 경계에 맞는 해상도.
- 색상 관리: 색상 프로파일을 템플릿과 교체 자산에 따라 일관되게 유지합니다.
- Batch 자동화: 다시 충전된 사용
RasterImage
I/O 및 메모리 흐름을 줄이기 위해 여러 레이어를 교체 할 때. - 인증: PSD를 배포하기 전에 조정 및 스케일링을 확인하기 위해 교체 후 PNG 프리뷰를 수출합니다.
- Fallbacks: 문서에 똑똑한 개체가 없으면 명확한 오류로 빠르게 실패하거나 파일을 배치 모드로 옮기십시오.
이러한 패턴을 사용하면 크기에 따라 스마트 개체를 대체하고 Photoshop을 열지 않고 업데이트 된 배달을 저장하는 신뢰할 수있는 PSD 템플릿 파이프를 구축 할 수 있습니다.