Exportování PSD do GIF je běžným handoffem pro webové grafiky, e-mailové aktivy a lehké animace. s Aspose.PSD pro .NET, můžete převést PSD na statický gif v jednom volání, a když PSD obsahuje časový řádek animace, môžete exportovat *animatovaný gif přímo z této časové řady.
Tento článek ukazuje obě scénáře s kompletním inline kódem.
Předpoklady
- .NET 6 nebo novější (nebo .Net Framework 4.6.2+)
- Vybraný balíček:
Aspose.PSD
dotnet add package Aspose.PSD
Přeměna PSD na statický GIF
Použití Image.Load
Otevřít PSD, vyzvednout PsdImage
a zachraňovat s GifOptions
To přináší PSD do jednorázového 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));
}
}
Poznámky
- Statický export nevyžaduje časovou linku v PSD.
- Pokud potřebujete jinou velikost souboru nebo vzhled, optimalizujte zdrojové umělecké dílo (plátno, zjednodušte barvy) před exportem.
Konvertovat časové linie založené na PSD na animované GIF
Pokud váš PSD obsahuje časovou linku animace, můžete ji exportovat jako animovaný GIF pomocí časové linie API.
// 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));
}
}
}
}
Poznámky
- Tato trasa respektuje rámcový řád a zpoždění podle rámce definované v časovém řádu PSD.
- Pokud váš PSD nemá data časového řádu, kód se vrátí k jednorázovému GIF.
Volitelná batchová konverze
Následující nástroj konvertuje každý PSD v složce na GIF. Animované PSD exportují přes časovou linku, když jsou k dispozici, ostatní exportují jako statické Gify.
// 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}");
}
}
}
}
Zavolejte ji od Main
:
// inside Main
// BatchPsdToGif.Run(@"C:\in-psd", @"C:\out-gif");
Nejlepší postupy
- ** Barevné limity**: GIF používá indexovanou paletu s až 256 barvami na rám. Pro komplexní umělecké dílo, zvážíte zjednodušování vrstev nebo barev v PSD pro lepší a menší soubory.
- Transparence: GIF podporuje 1bitovou transparentnost.Pokud potřebujete plnou alfa, použijte PNG pro statické snímky a APNG na animace v kompatibilních prostředích.
- ** Rozměr souboru**: Animované GIF mohou být velké. Snížit počet rámů, velikost rámu, nebo detail umělecké práce, aby rozměry praktické.
- Verifikace: Vždy předvídat výsledek v cílových prostředích, aby se potvrdilo časování, otáčení a chování palety.
S těmito vzory můžete automatizovat jak statické, tak animované PSD na GIF exporty uvnitř vašich pracovních toků .NET.