Экспортирование ПСД в ГИФ — это распространенная проблема для веб-графики, электронной почты и легких анимаций. с Aspose.PSD для .NET вы можете конвертировать PSD в статический GIF в одном звонке, а когда PSD содержит график анимирования, вы сможете экспортуть анимированный Gif непосредственно с этого графика.
Эта статья показывает оба сценария с полным, встраиваемым кодом.
Предупреждения
- .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 генерируется автоматически.Если вам нужен разный размер файла или внешний вид, перед экспортом оптимизируйте источник искусства (плавный, упрощайте цвета).
Конвертировать ПСД на основе временной линии в анимационный 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. Анимационные 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 для статических изображений и APPG для анимации в совместимых средах.
- ** Размер файла**: Анимированные GIF могут быть большими. Снизить количество фремов, размеры рамки или детали искусства, чтобы размеры были практичными.
- Проверка: Всегда проверяйте результат в целевой среде, чтобы подтвердить расположение, крушение и палетное поведение.
С помощью этих шаблонов вы можете автоматизировать как статические, так и анимированные ПСД на экспорт GIF внутри ваших рабочих потоков .NET.