Izvoz PSD-a na GIF je uobičajeni handoff za web grafike, e-mail imovine i lagane animacije. sa Aspose.PSD za .NET, možete pretvoriti PSD u static Gif u jednom pozivu, a kada PSD sadrži časovnu liniju za animaciju, možeš izvoziti animirani gif izravno iz te vremenske linije.

Ovaj članak prikazuje oba scenarija s kompletnim, inline kodom.

Preduzeća

  • .NET 6 ili noviji (ili .Net Framework 4.6.2+)
  • Slijedeći paket: Aspose.PSD
dotnet add package Aspose.PSD

Konvertiranje PSD-a u statski GIF

Korištenje Image.Load Za otvaranje PSD-a, upućuje se na PsdImagei sačuvati s GifOptionsTo pretvara PSD u jedinstvenom GIF-u.

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

primjedbe

  • Statski izvoz ne zahtijeva vremensku liniju u PSD-u.
  • Ako vam je potrebna druga veličina ili izgled datoteke, prije izvoza optimizirajte izvornu umjetnost (flat, pojednostaviti boje).

Konvertirati timeline-based PSD u animirani GIF

Ako vaš PSD sadrži vremensku liniju animacije, možete je izvoziti kao animirani GIF pomoću API-ja vremenske linije.

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

primjedbe

  • Ovaj put poštuje redoslijed i odgode po okvirima definirane u vremenskoj liniji PSD-a.
  • Ako vaš PSD nema podatke o vremenskoj liniji, kod se vraća na GIF jedinstvenog okvira.

Opcionalna batch konverzija

Sljedeća utiliteta pretvara svaku PSD u mapu u GIF. Animirani PSD-ovi izvoze putem vremenske linije kada su dostupni, drugi izvoziti kao statski Gifovi.

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

Pozovite ga od Main:

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

Najbolje prakse

  • Boja ograničenja: GIF koristi indeksiranu paletu s do 256 boja po okvirima. za složenu umjetničku radnju, razmislite o pojednostavnjenju slojeva ili boje u PSD-u za bolje i manje datoteke.
  • Transparentnost: GIF podržava 1-bitnu transparentnost.Ako vam je potrebna potpuna alfa, koristite PNG za statske slike i API za animaciju u kompatibilnim okruženjima.
  • Veličina datoteke: Animirani GIF-ovi mogu biti veliki.Smanjite broj okvir, veličinu okvir ili detalje umjetnosti kako biste održali veličine praktične.
  • Verifikacija: Uvijek provjerite izlazak u ciljanim okruženjima kako biste potvrdili vrijeme, kretanje i ponašanje palete.

S tim uzorcima možete automatizirati i statske i animirane PSD-ove na GIF izvoze unutar vaših .NET radnih tokova.

More in this category