PSD를 GIF로 내보내는 것은 웹 그래픽, 이메일 자산 및 가벼운 무게 애니메이션에 대한 일반적인 허용입니다. Aspose.PSD for .NET를 사용하면 한 번의 통화에서 PSD를 static Gif로 변환할 수 있으며, PSD가 동기화 타임 라인을 함유하고 있는 경우에는 그 타이밍 라인에서 직접 animated Gifi을 수출 할 수 있습니다.
이 기사는 완전한 인라인 코드와 함께 두 시나리오를 보여줍니다.
원칙
- .NET 6 또는 이후 (또는 .Net Framework 4.6.2+)
- 포장 패키지 :
Aspose.PSD
dotnet add package Aspose.PSD
PSD를 정적 GIF로 변환합니다.
사용하기 Image.Load
PSD를 개설하려면, PsdImage
그리고 저장할 수 있는 GifOptions
이것은 PSD를 단일 프레임 GIF로 밀어 넣습니다.
// File: Program.cs
using System;
using System.IO;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.ImageOptions;
class Program
{
static void Main()
{
var inputPsd = "input.psd";
var outputGif = "output-static.gif";
if (!File.Exists(inputPsd))
{
Console.WriteLine("Input PSD not found.");
return;
}
using (var psd = (PsdImage)Image.Load(inputPsd))
{
// Export as a single-frame GIF
var gifOptions = new GifOptions();
psd.Save(outputGif, gifOptions);
}
Console.WriteLine("Saved: " + Path.GetFullPath(outputGif));
}
}
메모
- 정적 수출은 PSD에서 타임 라인을 필요로하지 않습니다.
- GIF 팔레트는 자동으로 생성됩니다.다른 파일 크기 또는 모양이 필요한 경우 수출하기 전에 출처 예술 작품을 최적화하십시오.
타임 라인 기반 PSD를 애니메이션 GIF로 변환
귀하의 PSD에는 애니메이션 타임 라인이 포함되어 있다면, 시간 라인 API를 사용하여 동영상 GIF로 수출할 수 있습니다.이것은 프레임 순서와 PSD에 저장된 프리임 지연을 유지합니다.
// File: Program.cs
using System;
using System.IO;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.ImageOptions;
class Program
{
static void Main()
{
var inputPsd = "animated.psd";
var outputAgif = "output-animated.gif";
if (!File.Exists(inputPsd))
{
Console.WriteLine("Input PSD not found.");
return;
}
using (var psd = (PsdImage)Image.Load(inputPsd))
{
if (psd.Timeline != null)
{
// Export PSD timeline as animated GIF
var gifOptions = new GifOptions();
psd.Timeline.Save(outputAgif, gifOptions);
Console.WriteLine("Saved animated GIF: " + Path.GetFullPath(outputAgif));
}
else
{
// Fallback to static export if the PSD has no timeline
var gifOptions = new GifOptions();
psd.Save(outputAgif, gifOptions);
Console.WriteLine("PSD has no timeline. Saved static GIF: " + Path.GetFullPath(outputAgif));
}
}
}
}
메모
- 이 경로는 PSD 타임 라인에 정의된 프레임 순서와 프라임 지연을 준수합니다.
- PSD가 타임 라인 데이터가 없다면 코드는 단일 프레임 GIF로 돌아갑니다.
옵션 배치 변환
다음 유틸리티는 각 PSD를 폴더에서 GIF로 변환합니다. 애니메이션 PSD는 사용 가능한 경우 타임 라인을 통해 수출되며, 다른 사람들은 정적 Gif로 추출됩니다.
// File: BatchPsdToGif.cs
using System;
using System.IO;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.ImageOptions;
public static class BatchPsdToGif
{
public static void Run(string inputDir, string outputDir)
{
Directory.CreateDirectory(outputDir);
var psdFiles = Directory.GetFiles(inputDir, "*.psd", SearchOption.AllDirectories);
foreach (var psdPath in psdFiles)
{
var rel = Path.GetRelativePath(inputDir, psdPath);
var outFn = Path.ChangeExtension(rel, ".gif");
var outFp = Path.Combine(outputDir, outFn);
Directory.CreateDirectory(Path.GetDirectoryName(outFp) ?? outputDir);
try
{
using var psd = (PsdImage)Image.Load(psdPath);
var gifOptions = new GifOptions();
if (psd.Timeline != null)
{
psd.Timeline.Save(outFp, gifOptions);
}
else
{
psd.Save(outFp, gifOptions);
}
Console.WriteLine($"OK {rel} -> {outFn}");
}
catch (Exception ex)
{
Console.WriteLine($"ERR {rel}: {ex.Message}");
}
}
}
}
그것을 부르며 Main
:
// inside Main
// BatchPsdToGif.Run(@"C:\in-psd", @"C:\out-gif");
최고의 관행
- 색상 제한: GIF는 프레임 당 최대 256 색상으로 인덱스된 팔레트를 사용합니다. 복잡한 예술 작품을 위해 PSD의 단순화 레이어 또는 색상을 고려하여 더 나은 다이어트 및 더 작은 파일을 제공하십시오.
- ** 투명성**: GIF는 1비트 투명을 지원합니다.전체 알파가 필요하다면 PNG를 사용하여 정적 이미지를 사용하고 APNG는 호환되는 환경에서 애니메이션을 사용하십시오.
- 파일 크기: 애니메이션 GIF는 크다. 프레임 숫자를 줄이거나, 프리임 크기를 줄이고, 예술 작품의 세부 사항을 실용적으로 유지하십시오.
- Verification: 항상 타이밍, 로핑 및 팔레트 행동을 확인하기 위해 대상 환경에서 결과를 예측합니다.
이러한 패턴을 사용하면 .NET 작업 흐름 내에서 정적 및 애니메이션 PSD를 GIF 수출으로 자동화할 수 있습니다.