Met Aspose.PSD voor .NET, kunt u een PSD converteren naar een statische GIF in één oproep, en wanneer een PSD een animatietijdlijn bevat, kun je een animatie-GIF rechtstreeks uit die tijdlijne exporteren.

Dit artikel toont beide scenario’s met complete, inline code.

Voorwaarden

  • .NET 6 of later (of .Net Framework 4.6.2+)
  • NuGet pakket: Aspose.PSD
dotnet add package Aspose.PSD

Convert PSD naar statische GIF

Gebruik Image.Load om de PSD te openen, uit te roepen tot PsdImageen bespaart met GifOptionsDit vloeit de PSD in een single-frame 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));
    }
}

Opmerkingen

  • Statische export vereist geen tijdlijn in de PSD.
  • Als u een andere bestandsgrootte of uiterlijk nodig hebt, optimaliseren de bron kunstwerken (vloer, vereenvoudigen kleuren) voor de export.

Convert tijdlijn gebaseerde PSD naar geanimeerde GIF’s

Als uw PSD een animatietijdlijn bevat, kunt u het exporteren als een geanimeerde GIF met behulp van de timeline API. Dit behoudt frame order en frame vertragingen opgeslagen in de 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));
            }
        }
    }
}

Opmerkingen

  • Deze route respecteert de frame order en per-frame vertragingen zoals gedefinieerd in de PSD timeline.
  • Als uw PSD geen timeline-gegevens heeft, valt de code terug naar een single-frame GIF.

Optie Batch Conversie

De volgende utiliteit converteert elke PSD in een map naar GIF. geanimeerde PSD’s worden uitgevoerd via de tijdlijn wanneer beschikbaar is, anderen als statische Gif’en.

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

Noem het van Main:

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

Beste praktijken

  • Color limits: GIF maakt gebruik van een geïndexeerde palet met tot 256 kleuren per frame.Voor complexe kunstwerken, overweeg het vereenvoudigen van lagen of kleuren in de PSD voor betere en kleinere bestanden.
  • Transparentie: GIF ondersteunt 1-bit transparantie.Als u volledige alpha nodig hebt, gebruikt u PNG voor statische afbeeldingen en APNG om te animeren in compatibele omgevingen.
  • File size: Geanimeerde GIF’s kunnen groot zijn. verminderen van het frame count, frame size, of kunstwerk detail om de grootte praktisch te houden.
  • Verificatie: Altijd vooruitgang bekijken in doelomgevingen om timing, loop en palet gedrag te bevestigen.

Met deze patronen kunt u zowel statische als geanimeerde PSD naar GIF-exporten binnen uw .NET-werkstromen automatiseren.

More in this category