PSD: n vienti GIF:iin on yleinen handoff web-grafiikkaan, sähköpostin omaisuuteen ja kevyen painon animaatioihin. Aspose.PSD for .NET: llä voit muuntaa PSD: stä staattiseksi gifiksi yhdellä puhelulla, ja kun PSD sisältää animaation aikataulun, voit viedä animation gifin suoraan kyseisestä aikataulusta.

Tässä artikkelissa esitetään molemmat skenaarioita, joissa on täydellinen, inline koodi.

edellytykset

  • .NET 6 tai uudempi (tai .Net Framework 4.6.2+)
  • NuGet paketti: Aspose.PSD
dotnet add package Aspose.PSD

PSD:n muuntaminen staattiseksi GIF:ksi

Käytä Image.Load PSD:n avaaminen ja päättäminen PsdImageja säästää yhdessä GifOptionsTämä laittaa PSD: n yhden puolen GIF:ään.

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

Huomautukset

  • Staattinen vienti ei vaadi aikataulua PSD: ssä.
  • Jos tarvitset erilaisen tiedoston koon tai ulkonäön, optimoi lähteen taideteos (suora, yksinkertaistaa värejä) ennen vientiä.

Ajanpohjainen PSD:n muuntaminen animaatioksi GIF:ksi

Jos PSD:ssäsi on animaation aikataulu, voit viedä sen animaatioksi GIF:ksi käyttämällä aikataulun API:tä.

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

Huomautukset

  • Tämä reitti kunnioittaa PSD:n aikataulussa määriteltyjä puitejärjestyksiä ja per-frame-viivästyksiä.
  • Jos PSD:llä ei ole aikajärjestelmää koskevia tietoja, koodi putoaa takaisin yksisuuntaiseen GIF-muotoon.

Vaihtoehtoinen batch muuntaminen

Seuraava työkalu muuntaa jokaisen PSD: n tiedostossa GIF:ään. animaatiopalvelut viedään ajankohdan kautta, kun niitä on saatavilla, toiset viennistä staattisina Gif:inä.

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

Soita se pois Main:

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

Parhaat käytännöt

  • ** Värin rajat**: GIF käyttää indeksoitua palettia, jossa on enintään 256 väriä kerrosta kohden. monimutkaisia taideteoksia varten harkitse PSD: ssä yksinkertaistamalla kerroksia tai värejä parempien ja pienempiä tiedostoja varten.
  • ** Läpinäkyvyys**: GIF tukee 1-bittistä läpinäkymistä.Jos tarvitset täyden alfan, käytä PNG:tä staattisille kuville ja APNG-nimityksiä yhteensopivissa ympäristöissä.
  • File size: Animated GIFs voivat olla suuria. vähentää kehyksen lukumäärää, kerman koon tai taideteoksen yksityiskohtia pitääksesi koko käytännöllinen.
  • Verificaatio: Aina ennakoida tuotantoa kohdeympäristöissä, jotta voidaan vahvistaa ajoitus, kiertäminen ja paletti käyttäytyminen.

Näiden mallien avulla voit automatisoida sekä staattisen että animaation PSD: n GIF-eksporteihin .NET-työvirtojen sisällä.

More in this category