Exportovanie PSD do GIF je bežným handoffom pre webové grafiky, e-mailové aktíva a ľahké animácie. Aspose.PSD pre .NET, môžete premeniť PSD na statický gif v jednom hovore, a keď PSD obsahuje časovú linku animácií, môžeš exportovať *animovaný gif priamo z tejto časovej linky.

Tento článok ukazuje oba scenáre s kompletným inline kódom.

Predpoklady

  • .NET 6 alebo novší (alebo .Net Framework 4.6.2+)
  • NuGet balíček: Aspose.PSD
dotnet add package Aspose.PSD

Konvertovať PSD na statický GIF

Použitie Image.Load Otvorí sa PSD, odvoláva sa PsdImagea zachrániť s GifOptionsTo vloží PSD do jednorazového 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));
    }
}

Poznámky

  • Statický vývoz nevyžaduje časovú čiaru v PSD.
  • GIF paleta sa generuje automaticky.Ak potrebujete inú veľkosť súboru alebo vzhľad, optimalizujte zdrojový umelecký diel (platený, zjednodušiť farby) pred exportom.

Konvertovať timeline-based PSD na animované GIF

Ak váš PSD obsahuje časovú linku animácie, môžete ju exportovať ako animovaný GIF pomocou časovej API. To zachováva rámový poriadok a rámové oneskorenia uložené v 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));
            }
        }
    }
}

Poznámky

  • Táto trasa rešpektuje rámový poriadok a perframe oneskorenia definované v časovej línii PSD.
  • Ak váš PSD nemá časové údaje, kód sa vráti do jednorazového GIF.

Voliteľná batch konverzia

Nasledujúca užitočnosť konvertuje každý PSD v priečinku na GIF. Animované PSD exportujú cez časovú čiaru, keď sú k dispozícii, iní vyvážajú ako statické gify.

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

Zavolajte ju od Main:

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

Najlepšie postupy

  • ** Farebné limity**: GIF používa indexovanú paletu s až 256 farbami na rám. Pre komplexné umelecké diela zvážte zjednodušovanie vrstiev alebo farieb v PSD pre lepšie a menšie súbory.
  • Transparencia: GIF podporuje 1-bitovú transparentnosť.Ak potrebujete plnú alfa, použite PNG pre statické obrázky a APNG na animáciu v kompatibilných prostrediach.
  • Veľkosť súboru: Animované GIFy môžu byť veľké.Znížte počet rámov, veľkosť rámu alebo detail umeleckého diela, aby boli veľkosti praktické.
  • Verifikácia: Vždy predvídať výkon v cieľových prostrediach, aby sa potvrdilo časovanie, otáčanie a paletové správanie.

S týmito vzormi môžete automatizovať statické a animované PSD na GIF exporty vo vašich pracovných tokoch .NET.

More in this category