עם 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.

More in this category