L’esportazione di PSD in GIF è un’offerta comune per le grafiche web, gli atti di posta elettronica e le animazioni leggermente pesanti. con Aspose.PSD per .NET, è possibile convertire un PSD a un GIF statico in una chiamata, e quando un PSD contiene una linea di tempo di animazione, puoi esportare un gIF animato* direttamente da quella linea.

Questo articolo mostra entrambi i scenari con codice completo e in linea.

Prerequisiti

  • .NET 6 o successivo (o .Net Framework 4.6.2+)
  • Il pacchetto NuGet: Aspose.PSD
dotnet add package Aspose.PSD

Convertire PSD in GIF statico

Utilizzo Image.Load per l’apertura del PSD, lanciato a PsdImagee salvare con GifOptionsQuesto mette il PSD in un GIF single-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));
    }
}

Notizie

  • L’esportazione statica non richiede un timeline nel PSD.
  • La paletta GIF viene generata automaticamente.Se hai bisogno di un file diverso dimensione o aspetto, ottimizzare l’arte della fonte (flatte, semplificare i colori) prima di esportare.

Convertire il timeline-based PSD in animato GIF

Se il tuo PSD contiene un timeline di animazione, puoi esportarlo come un GIF animato utilizzando l’API del Timeline.

// 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));
            }
        }
    }
}

Notizie

  • Questo percorso rispetta l’ordine quadro e i ritardi per frame definiti nel timeline PSD.
  • Se il tuo PSD non dispone di dati di timeline, il codice cade indietro a un GIF single-frame.

Conversione opzionale batch

L’utilità seguente converte ogni PSD in una cartella in GIF. i PSD animati vengono esportati tramite la linea di tempo quando disponibili, gli altri vengono exportati come Gif statici.

// 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}");
            }
        }
    }
}

Chiamalo da Main:

// inside Main
// BatchPsdToGif.Run(@"C:\in-psd", @"C:\out-gif");

Le migliori pratiche

  • ** Limiti dei colori**: GIF utilizza una paletta indexata con fino a 256 colori per frame.Per lavori di arte complessi, considerare semplificando le strati o i colori nel PSD per i file migliori e più piccoli.
  • Transparenza: GIF supporta trasparenze di 1 bit.Se hai bisogno di un alfa completo, utilizzi PNG per le immagini statiche e APPG per l’animazione in ambienti compatibili.
  • Grande dimensioni del file: GIF animati possono essere grandi.Riduce il numero di frame, la dimensione del frame o il dettaglio dell’arte per mantenere le misure pratiche.
  • Verificazione: Visualizza sempre le prestazioni in ambienti mirati per confermare il timing, il looping e il comportamento di palette.

Con questi modelli, puoi automatizzare sia PSD statico che animato alle esportazioni GIF all’interno dei tuoi flussi di lavoro .NET.

More in this category