Вивезення 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));
}
}
Зауваження
- Статичний експорт не вимагає часової лінії в ПСД.
- Якщо вам потрібен інший розмір або зовнішній вигляд файлу, перед експортом оптимізуйте джерело мистецтва (плавний, упростіть кольори).
Конвертувати ПСД на основі часової лінії в анімаційний GIF
Якщо у вашому PSD є графік анімації, ви можете експортувати його в якості амітованого GIF за допомогою API-часової лінії, що зберігає порядок і затримки рамки, які зберігаються в PSD.
// 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. Анімаційні PSD експортуються через графік часу, коли вони доступні, інші експортуються як статичні 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 для статичних зображень і API для анімації в сумісних середовищах.
- ** Розмір файлу**: Анімаційні GIF можуть бути великими. Зменшити кількість рам, розмір рамки або деталі мистецтва, щоб зберегти розміри практичними.
- ** Перевірка**: Завжди переглядати результати в цільових середовищах, щоб підтвердити час, обертання та поведінку палету.
За допомогою цих шаблонів ви можете автоматизувати як статичний, так і анімаційний PSD до експорту GIF в межах ваших робочих потоків .NET.