Eksportowanie PSD do GIF jest powszechnym zabiegiem dla grafiki internetowej, aktywów e-mail i animacji o lekkiej masie. Aspose.PSD dla .NET, można przekonwertować PSD na statyczny gif w jednym wezwaniu, a gdy PSD zawiera linię czasową animacji, możesz eksportować *animowany gif bezpośrednio z tej linii czasowej.
W tym artykule pokazano obie scenariusze z kompletnym kodem inline.
Warunki
- .NET 6 lub nowszy (lub .Net Framework 4.6.2+)
- Pakiet nowości:
Aspose.PSD
dotnet add package Aspose.PSD
Konwertuj PSD na statyczny GIF
Używanie Image.Load
Wystarczy otworzyć PSD, a następnie PsdImage
i zaoszczędzić z GifOptions
Oznacza to, że PSD staje się jednorazowym 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));
}
}
notatki
- Eksport statyczny nie wymaga harmonogramu w PSD.
- Jeśli potrzebujesz innego rozmiaru pliku lub wyglądu, zoptymalizuj źródłowe dzieło (flat, uproszcz kolory) przed eksportowaniem.
Konwersja opartej na linii czasowej PSD do animowanego GIF
Jeśli Twój PSD zawiera linię czasową animacji, możesz eksportować ją jako animowany GIF za pomocą API linii czasowej.
// 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));
}
}
}
}
notatki
- Ta ścieżka przestrzega porządku ramowego i opóźnień per-frame zdefiniowanych w linii czasowej PSD.
- Jeśli Twój PSD nie ma danych czasowych, kod spadnie z powrotem do jednorazowego GIF.
Opcjonalna konwersja batch
Następujące narzędzie konwertuje każdy PSD w folderze do GIF. Animowane PSD eksportowane za pośrednictwem linii czasowej, gdy są dostępne, inne eksportują jako statyczne Gify.
// 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}");
}
}
}
}
Zadzwoń do niego od Main
:
// inside Main
// BatchPsdToGif.Run(@"C:\in-psd", @"C:\out-gif");
Najlepsze praktyki
- Limity kolorów: GIF wykorzystuje indeksowaną paletę z do 256 kolorami na ramy.W przypadku złożonych dzieł sztuki, zastanów się nad uproszczeniem warstw lub koloru w PSD dla lepszych i mniejszych plików.
- Transparencja: GIF obsługuje przejrzystość 1-bitową.Jeśli potrzebujesz pełnej alfy, użyj PNG dla statycznych obrazów i APNG do animacji w kompatybilnych środowiskach.
- ** Rozmiar pliku**: Animowane GIFy mogą być duże. zmniejszyć liczbę ram, rozmiar ram lub szczegóły sztuki, aby utrzymać rozmiary praktyczne.
- Weryfikacja: Zawsze przewidywać wydajność w środowiskach docelowych w celu potwierdzenia czasu, biegania i zachowania palety.
Dzięki tym wzorom możesz automatyzować zarówno statyczne, jak i animowane PSD do eksportu GIF wewnątrz przepływów roboczych .NET.