Att exportera PSD till GIF är en vanlig handoff för webgrafik, e-post tillgångar och lätta animationer. med Aspose.PSD för .NET kan du konvertera en PSD i en statisk gif i ett samtal, och när en PSD innehåller en animationstidslinje, kan man exportera en animerad gif direkt från den tidslinjen.
Den här artikeln visar båda scenarierna med komplett, inline-kod.
förutsättningar
- .NET 6 eller senare (eller .Net Framework 4.6.2+)
- NuGet förpackning:
Aspose.PSD
dotnet add package Aspose.PSD
Konvertera PSD till statisk GIF
Användning Image.Load
för att öppna PSD, kastas till PsdImage
och sparar med GifOptions
Detta flätar PSD till en enhetlig 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));
}
}
Anmärkning
- Statisk export kräver inte en tidslinje i PSD.
- Om du behöver en annan filstorlek eller utseende, optimera källa konstverk (flat, förenkla färger) innan export.
Konvertera timeline-baserad PSD till animerad GIF
Om din PSD innehåller ett animationstidslinje kan du exportera det som en animerad GIF med hjälp av tidslinjen API. Detta bevarar ramordningen och ramförseningar som lagras i 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));
}
}
}
}
Anmärkning
- Denna väg respekterar ramordningen och per-frame förseningar som definieras i PSD-tidslinjen.
- Om din PSD inte har tidslinjedata faller koden tillbaka till en enhetlig GIF.
Optionell batchkonvertering
Följande verktyg konverterar varje PSD i en mapp till GIF. Animerade PSD exporteras via tidslinjen när det är tillgängligt, andra exporteras som statiska 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}");
}
}
}
}
Kalla det från Main
:
// inside Main
// BatchPsdToGif.Run(@"C:\in-psd", @"C:\out-gif");
Bästa praxis
- Färggränser: GIF använder en indexerad palett med upp till 256 färger per ram. För komplexa konstverk, överväga att förenkla lager eller färg i PSD för bättre och mindre filer.
- Transparens: GIF stöder 1-bitars transparens.Om du behöver full alfa, använd PNG för statiska bilder och APNG for animation i kompatibla miljöer.
- Filstorlek: Animerade GIF kan vara stora. minska antalet ramar, ramstorlekar eller konstverk detaljer för att hålla storlekarna praktiska.
- Verifikation: Alltid förhandsgranska resultatet i målmiljöer för att bekräfta timing, loop och palett beteende.
Med dessa mönster kan du automatisera både statisk och animerad PSD till GIF-exporter inom dina .NET-arbetsflöden.