Exportación de PSD a GIF es un handoff común para gráficos web, activos de correo electrónico y animaciones ligeras. con Aspose.PSD para .NET, se puede convertir un PSD en un GIF estático en una llamada, y cuando un PSD contiene una línea de tiempo de animación, puede exportar un gIF animado* directamente de esa línea del tiempo.
Este artículo muestra ambos escenarios con código completo, en línea.
Prerequisitos
- .NET 6 o posterior (o .Net Framework 4.6.2+)
- NuGet paquete:
Aspose.PSD
dotnet add package Aspose.PSD
Convertir PSD en GIF estático
Uso Image.Load
para abrir el PSD, lanzar a PsdImage
y salvar con GifOptions
Esto flata el PSD en un GIF de un solo marco.
// 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));
}
}
Notas
- Las exportaciones estáticas no requieren una línea de tiempo en el PSD.
- La paleta GIF se genera automáticamente.Si necesita un tamaño o apariencia de archivo diferente, optimiza la obra de arte de la fuente (flat, simplifica los colores) antes de exportar.
Convertir PSD basado en línea de tiempo en GIF animado
Si su PSD contiene una línea de tiempo de animación, puede exportarla como un GIF animado utilizando la API de línea.
// 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));
}
}
}
}
Notas
- Este camino respeta el orden marco y los retrasos per-frame definidos en la línea de tiempo del PSD.
- Si su PSD no tiene datos de timeline, el código cae de vuelta a un GIF de un único marco.
Conversión de batch opcional
La utilidad siguiente converte cada PSD en una carpeta en GIF. Los PSD animados se exportan a través de la línea de tiempo cuando esté disponible, otros se exportan como gifs estáticos.
// 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}");
}
}
}
}
llamarlo de Main
:
// inside Main
// BatchPsdToGif.Run(@"C:\in-psd", @"C:\out-gif");
Las mejores prácticas
- Límites de colores: GIF utiliza una paleta indexada con hasta 256 colores por marco.Para obras de arte complejas, considere simplificar las capas o los colores en el PSD para mejores y más pequeños archivos.
- Transparencia: GIF soporta transparencia de 1 bits.Si necesita alfa completa, utilice PNG para imágenes estáticas y APNG por animación en entornos compatibles.
- Tamaño de archivo: Los gifs animados pueden ser grandes. Reduce el número de cuadros, el tamaño del cuadro o el detalle de arte para mantener los tamaños prácticos.
- Verificación: Siempre previe el rendimiento en los entornos del objetivo para confirmar el timing, el looping y el comportamiento de la paleta.
Con estos patrones, puede automatizar tanto los PSD estáticos como animados a las exportaciones GIF dentro de sus flujos de trabajo .NET.