PSD を GIF に輸出することは、Web グラフィック、メール 資産、軽量なアニメーションの一般的なハンドフです. Aspose.PSD for .NET を使用すると、1 つの通話で PSD と変換することができます 静的 Gif と、 PSD のアニマーション タイムラインが含まれている場合、そのタイミングラインから直接 **animated Gifi を実行できます。

この記事では、完全なインラインコードで両方のシナリオを示しています。

原則

  • .NET 6 またはそれ以降(または .Net Framework 4.6.2+)
  • パッケージ: Aspose.PSD
dotnet add package Aspose.PSD

PSDを静的なGIFに変換する

利用 Image.Load オープンするためにPSD、投げ出すために 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 パレットは自動的に生成されます. 別のファイルサイズまたは外観が必要な場合は、輸出前にソースアートワーク(フラット、色を簡素化)を最適化します。

タイムラインベースのPSDをアニメーションGIFに変換する

あなたのPSDにはアニメーションタイムラインが含まれている場合、あなたは時間ラインAPIを使用してアニマーション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   = "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に変換します. アニメ化されたSSDは利用可能なタイムラインを介して輸出され、他の人は静的な GIFとしてエクスポートされます。

// 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 を使用し、互換性のある環境でアニメーションするための APNG の使用を行います。
  • ファイルサイズ:アニメ化されたGIFは大きいかもしれません. フレーム数、フレムサイズ、または芸術作品の詳細を減らし、サイズを実用的に保つことができます。
  • Verification: 常にターゲット環境での出力を予測し、タイミング、ローリング、パレット行動を確認します。

これらのパターンでは、静的およびアニメ化されたPSDをGIFエクスポートに自動化することができます。

More in this category