Exportarea PSD la GIF este o greșeală comună pentru grafica web, activele de e-mail și animațiile ușoare. cu Aspose.PSD pentru .NET, puteți converti un PSD în un GIF static într-o singură apelare, iar atunci când un PSD conține o linie de timp de animație, poți exporta un gIF animat* direct din acea liniă de oră.
Acest articol arată ambele scenarii cu cod complet, inline.
Prevederile
- .NET 6 sau mai târziu (sau .Net Framework 4.6.2+)
- Pachetul nu este:
Aspose.PSD
dotnet add package Aspose.PSD
Transformarea PSD în GIF static
Utilizarea Image.Load
să deschidă PSD, să pună la PsdImage
și salvează cu GifOptions
Acest lucru face ca PSD să devină un GIF unic-frame.
// 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));
}
}
Notă
- Exportul static nu necesită o linie de timp în PSD.
- Dacă aveți nevoie de o dimensiune sau aspect diferit, optimizați lucrarea de sursă (flat, simplificați culorile) înainte de export.
Conversați PSD bazat pe timeline în GIF-uri animate
Dacă PSD-ul dvs. conține o linie de timp de animație, îl puteți exporta ca un GIF animat folosind API-ului timeline. Acest lucru păstrează ordinea cadrului și întârzierile cadrelor stocate în 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));
}
}
}
}
Notă
- Această cale respectă ordinea cadrului și întârzierile per-frame definite în linia de timp PSD.
- Dacă PSD-ul dumneavoastră nu are date de timeline, codul cade înapoi la un GIF unic.
Conversie opțională batch
Următoarea utilitate convertește fiecare PSD într-o folderă în GIF. PSD-urile animate sunt exportate prin timeline atunci când sunt disponibile, altele sunt exportate ca Gif-uri statice.
// 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}");
}
}
}
}
L-a chemat de la Main
:
// inside Main
// BatchPsdToGif.Run(@"C:\in-psd", @"C:\out-gif");
Cele mai bune practici
- Limitele culorilor: GIF utilizează o paletă indexată cu până la 256 de culori pe cadru.Pentru lucrările de artă complexe, luați în considerare simplificarea straturilor sau colourilor din PSD pentru mai bune și mai mici fișiere.
- Transparență: GIF-ul susține transparența de 1 bit. Dacă aveți nevoie de o alfa completă, utilizați PNG pentru imagini statice și API pentru animație în medii compatibile.
- Mărimea fișierului: GIF-urile animate pot fi mari. Reduceți numărul de cadre, dimensiunea cadrului sau detaliile lucrărilor de artă pentru a menține dimensiunile practice.
- Verificare: Verificați întotdeauna rezultatul în mediile țintă pentru a confirma timing, looping și comportamentul de paletă.
Cu aceste modele, puteți automatiza atât PSD static și animat la exporturile GIF în fluxurile de lucru .NET.