Exportar PSD para GIF é um handoff comum para gráficos da web, ativos de e-mail e animações de peso leve. com Aspose.PSD para .NET, você pode converter um PSD em um GIF estático em uma chamada, e quando o PSD contém uma linha de tempo de animação, Você pode exportar um gIF animado* diretamente a partir daquela linha do tempo.

Este artigo mostra ambos os cenários com código completo, inline.

Pré-requisitos

  • .NET 6 ou posterior (ou .Net Framework 4.6.2+)
  • Embalagem de NuGet: Aspose.PSD
dotnet add package Aspose.PSD

Converter PSD para GIF estático

Utilização Image.Load para abrir o PSD, lançado para PsdImagee salvar com GifOptionsIsso faz com que o PSD se torne um 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));
    }
}

Notas

  • A exportação estática não requer uma linha de tempo no PSD.
  • Se você precisa de um tamanho ou aparência de arquivo diferente, otimize a obra de arte fonte (flat, simplifique as cores) antes de exportar.

Converter PSD baseado na linha de tempo para GIF animado

Se o seu PSD contém uma linha de tempo de animação, você pode exportá-la como um GIF animado usando a API da linha do tempo.

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

Notas

  • Este caminho respeita a ordem do quadro e os atrasos per-frame definidos na linha de tempo do PSD.
  • Se o seu PSD não tem dados de linha de tempo, o código cai de volta para um GIF de um único quadro.

Conversão de batch opcional

A utilidade a seguir converte cada PSD em uma pasta para GIF. PSDs animados são exportados através da linha de tempo quando disponível, outros exportam como Gifs estáticos.

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

Chame-o de Main:

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

Melhores práticas

  • Limites de cores: GIF usa uma paleta indexada com até 256 cores por quadro.Para obras de arte complexas, considere simplificar camadas ou cores no PSD para melhores e arquivos menores.
  • Transparência: GIF suporta transparência de 1 bits.Se você precisar de uma alfa completa, use PNG para imagens estáticas e API para animação em ambientes compatíveis.
  • Dimensão do arquivo: GIFs animados podem ser grandes. reduzir o número de quadros, tamanho do quadro ou detalhes de arte para manter os tamanhos práticos.
  • Verificação: Sempre exibir o desempenho em ambientes alvo para confirmar o comportamento de timing, looping e paleta.

Com esses padrões, você pode automatizar tanto PSD estático e animado para exportações GIF dentro de seus fluxos de trabalho .NET.

More in this category