Exporter PSD à GIF est un défaut commun pour les graphiques web, les actifs de courrier électronique et les animations légères. Avec Aspose.PSD pour .NET, vous pouvez convertir un PSD en un GIF statique en une seule appel, et lorsque un PSD contient une ligne de temps d’animation, il est possible d’exporter un gIF animé* directement de cette ligne.

Cet article montre les deux scénarios avec un code en ligne complet.

Principaux

  • .NET 6 ou ultérieur (ou .Net Framework 4.6.2+)
  • Nouveau paquet : Aspose.PSD
dotnet add package Aspose.PSD

Convertir PSD en GIF statique

Utiliser Image.Load Pour ouvrir le PSG, c’est PsdImageet sauvegarder avec GifOptionsCeci flanque le PSD dans 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));
    }
}

Notes

  • L’exportation statique n’a pas besoin d’un timeline dans le PSD.
  • La palette GIF est générée automatiquement.Si vous avez besoin d’une taille de fichier différente ou une apparence, optimisez l’art de source (flat, simplifiez les couleurs) avant l’exportation.

Convertir PSD basé sur le timeline en GIF animé

Si votre PSD contient une timeline d’animation, vous pouvez l’exporter en tant que GIF animé en utilisant l’API de 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));
            }
        }
    }
}

Notes

  • Ce parcours respecte l’ordre du cadre et les retards par cadre définis dans la ligne de temps PSD.
  • Si votre PSD n’a pas de données de timeline, le code tombe en arrière à un GIF unique.

Conversion de batch optionnelle

L’utilité suivante convertit chaque PSD dans un dossier en GIF. Les PSD animés sont exportés via la ligne de temps lorsqu’ils sont disponibles, d’autres exportent en tant qu’GIF statiques.

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

Appelez-le de Main:

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

Les meilleures pratiques

  • Limites de couleurs: GIF utilise une palette indexée avec jusqu’à 256 couleurs par cadre.Pour des œuvres d’art complexes, considérez la simplification des couches ou des couleurs dans le PSD pour des fichiers meilleurs et plus petits.
  • Transparence: GIF prend en charge la transparence de 1 bits.Si vous avez besoin d’une alpha complète, utilisez le PNG pour les images statiques et l’APNG dans des environnements compatibles.
  • Size de fichier: GIFs animés peuvent être grands. Réduire le nombre de cadres, la taille du cadre, ou les détails d’art pour garder les dimensions pratiques.
  • Vérification: Toujours vérifier la sortie dans les environnements cibles pour confirmer le timing, le looping et le comportement de palette.

Avec ces modèles, vous pouvez automatiser les exportations de PSD statiques et animées à GIF dans vos flux de travail .NET.

More in this category