Експортирането на PSD към GIF е често срещана грешка за уеб графика, имейл активи и анимации с леко тегло. с Aspose.PSD за .NET можете да конвертирате PSD в статичен ГИФ в едно обаждане, а когато PSD съдържа график за анимиране, можете директно да изнесете анимиран ГИС от тази графична линия.

Тази статия показва и двата сценария с пълен, вътрешен код.

Предупреждения

  • .NET 6 или по-късно (или .Net Framework 4.6.2+)
  • Пакетът на НУГЕТ: Aspose.PSD
dotnet add package Aspose.PSD

Конвертиране на PSD в статичен GIF

Използване Image.Load за отваряне на ПСД, за да се PsdImageи спасяват с GifOptionsТова превръща PSD в еднократен 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));
    }
}

Забележки

  • Статическият износ не изисква временна линия в PSD.
  • Палетът GIF се генерира автоматично.Ако имате нужда от различен размер на файла или външен вид, оптимизирайте източника на изкуството (плав, опростяване на цветовете) преди износ.

Конвертиране на ПСД на базата на графика в анимационен GIF

Ако вашият PSD съдържа график за анимация, можете да го експортирате като анимиран GIF, като използвате API за графики.

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

Забележки

  • Този път уважава реда на рамката и закъсненията по рамка, определени в часовата линия на PSD.
  • Ако вашият PSD няма данни за временна линия, кодът се връща към еднократен GIF.

Опционална конверсия на батерията

Следващият инструмент конвертира всеки PSD в папката в GIF. Анимирани PSDs се експортират чрез временна линия, когато е налице, други се износят като статични Gifs.

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

Назовете го от Main:

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

Най-добрите практики

  • Ограничения на цветовете: GIF използва индексирана палитра с до 256 цветове на рамка.За сложни произведения на изкуството, помислете за опростяване на слоеве или цветя в PSD за по-добри и малки файлове.
  • Прозрачност: GIF поддържа 1-битова прозорливост.Ако имате нужда от пълна алфа, използвайте PNG за статични изображения и AP NG за анимация в съвместими среди.
  • ** Размер на файла**: Анимирани GIFs могат да бъдат големи. Намалете броя на рамките, размера на рамите или детайлите на произведението, за да поддържате размерите практични.
  • Проверка: Винаги преглед на резултатите в целевата среда, за да се потвърди времето, хода и палетното поведение.

С тези шаблони можете да автоматизирате както статични, така и анимирани PSD до GIF експорти в рамките на вашите .NET работни потоци.

More in this category