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エクスポートに自動化することができます。