Mengekspor PSD ke GIF adalah handoff umum untuk grafis web, aset email, dan animasi ringan. Dengan Aspose.PSD untuk .NET, Anda dapat mengubah PSD menjadi GIF statik dalam satu panggilan dan ketika sebuah PSD mengandung timeline animasinya, anda dapat mengeksport gIF yang dianimasikan langsung dari timeline tersebut.
Artikel ini menunjukkan kedua skenario dengan lengkap, kode inline.
Persyaratan
- .NET 6 atau lebih baru (atau .Net Framework 4.6.2+)
- Pakej yang baru:
Aspose.PSD
dotnet add package Aspose.PSD
Konversi PSD ke GIF Statik
Penggunaan Image.Load
untuk membuka PSD, ditempatkan untuk PsdImage
dan menyelamatkan dengan GifOptions
Hal ini membuat PSD menjadi single-frame 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));
}
}
Peringatan
- Eksport statik tidak memerlukan timeline dalam PSD.
- Jika Anda membutuhkan ukuran file atau penampilan yang berbeda, mengoptimalkan karya seni sumber (lapas, menyederhanakan warna) sebelum mengekspor.
Konversi timeline-based PSD ke animasi GIF
Jika PSD Anda berisi timeline animasi, Anda dapat mengekspornya sebagai GIF yang dianimasikan menggunakan API Timeline. ini mempertahankan perintah frame dan keterlambatan frame yang disimpan dalam 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));
}
}
}
}
Peringatan
- Jalur ini menghormati perintah kerangka dan keterlambatan per-kerangka yang ditentukan dalam garis waktu PSD.
- Jika PSD Anda tidak memiliki data timeline, kode itu jatuh kembali ke GIF satu bingkai.
Alternatif Batch Conversion
Utilitas berikut mengkonversi setiap PSD dalam folder ke GIF. PSD animasi diekspor melalui timeline ketika tersedia, yang lain dieekspor sebagai Gif statik.
// 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}");
}
}
}
}
Memanggilnya dari Main
:
// inside Main
// BatchPsdToGif.Run(@"C:\in-psd", @"C:\out-gif");
Praktik Terbaik
- Batas warna: GIF menggunakan palet terindeks dengan hingga 256 warna per bingkai.Untuk karya seni yang kompleks, pertimbangkan untuk menyederhanakan lapisan atau warna dalam PSD untuk file yang lebih baik dan lebih kecil.
- Transparency: GIF mendukung transparansi 1 bit.Jika Anda membutuhkan alfa penuh, gunakan PNG untuk gambar statik dan APNG Untuk animasi di lingkungan yang kompatibel.
- Saiz file: GIF animasi dapat besar. mengurangi jumlah bingkai, ukuran frame, atau detail karya seni untuk menjaga ukuran praktis.
- Verification: Selalu memprediksi output di lingkungan sasaran untuk mengkonfirmasi perilaku timing, looping dan palet.
Dengan pola ini, Anda dapat mengautomatikkan kedua-dua PSD statik dan animasi untuk ekspor GIF di dalam aliran kerja .NET Anda.