עם Aspose.PSD עבור .NET, אתה יכול להמיר PSD ל- GIF סטטי בשיחה אחת, וכאשר PSD מכיל לוח זמנים של אנימציה, באפשרותך לייצא GIF אנמיה** ישירות מן לוח הזמנים.
מאמר זה מראה את שני הסצנות עם קוד מלא, מקוון.
דרישות
- .NET 6 או מאוחר יותר (או .Net Framework 4.6.2+)
- חבילה של NuGet:
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.
- אם אתה זקוק לגודל קובץ שונה או מראה, אופטימיזציה של עבודת האמנות המקור (פשט, פשוט צבעים) לפני הייצוא.
להפוך PSD מבוסס לוח זמנים ל- 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 חד צדדי.
אופציונלי Batch Conversion
המכשיר הבא מחליף כל PSD במעבדה ל- GIF. PSDs אנימטיים מיוצאים דרך קו הזמן כאשר זמינים, אחרים מייצאים כ-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 בתוך זרימת העבודה שלך .NET.