אנימציה PNG(גרפיקת רשת ניידת) היא הרחבה לפורמט PNG לשילוב האנימציות. בדיוק כמו קובצי GIF מונפשים, פורמט APNG משמש להצגת האנימציות. יתרון של APNG על פני GIF הוא שהוא תומך בשקיפות של 24 סיביות ואילו GIF תומך רק ב-8 סיביות. יתר על כן, APNG מספק אנימציה חלקה יותר בהשוואה ל-GIF מונפש. במאמר זה, אני אראה לך כיצד ליצור את תמונות ה-PNG המונפשות (APNG) מתמונה או Tiff מרובה עמודים ולייצא APNG ל-GIF מונפש באופן פרוגרמטי באמצעות C# (או VB.NET).

.NET API עבור תמונות PNG מונפשות

Aspose מציעה את .NET Imaging API ליצירה או מניפולציה של פורמטים פופולריים של תמונה, כולל PNG מונפש באמצעות C# או VB.NET. אנו נמנף את היכולות של Aspose.Imaging עבור .NET ליצור או לייצא תמונות PNG מונפשות. אתה יכול להוריד את ה-DLL של ה-API או להתקין אותו בתוך יישום ה-NET שלך באמצעות NuGet.

PM> Install-Package Aspose.Imaging

צור PNG מונפש מתמונה באמצעות C#

Aspose.Imaging עבור .NET מאפשר לך ליצור PNG מונפש מתמונה בת עמוד בודד כגון PNG על ידי הגדרת האנימציה ומשך הפריימים המותאמים אישית. להלן השלבים לביצוע פעולה זו.

דוגמת הקוד הבאה מראה כיצד ליצור PNG מונפש (APNG) מתמונת PNG באמצעות C#.

using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Apng;

const int AnimationDuration = 1000; // 1 s
const int FrameDuration = 70; // 70 ms
using (RasterImage sourceImage = (RasterImage)Image.Load("not_animated.png"))
{
    ApngOptions createOptions = new ApngOptions
    {
        Source = new FileCreateSource("raster_animation.png", false),
        DefaultFrameTime = (uint)FrameDuration,
        ColorType = PngColorType.TruecolorWithAlpha,
    };

    using (ApngImage apngImage = (ApngImage)Image.Create(
        createOptions,
        sourceImage.Width,
        sourceImage.Height))
    {
        int numOfFrames = AnimationDuration / FrameDuration;
        int numOfFrames2 = numOfFrames / 2;

        apngImage.RemoveAllFrames();

        // הוסף מסגרת ראשונה
        apngImage.AddFrame(sourceImage, FrameDuration);

        // להוסיף מסגרות ביניים
       for (int frameIndex = 1; frameIndex < numOfFrames - 1; ++frameIndex)
        {
            apngImage.AddFrame(sourceImage, FrameDuration);
            ApngFrame lastFrame = (ApngFrame)apngImage.Pages[apngImage.PageCount - 1];
            float gamma = frameIndex >= numOfFrames2 ? numOfFrames - frameIndex - 1 : frameIndex;
            lastFrame.AdjustGamma(gamma);
        }

        // הוסף מסגרת אחרונה
        apngImage.AddFrame(sourceImage, FrameDuration);

        apngImage.Save();
    }
}

צור PNG מונפש מ-Tiff מרובה עמודים באמצעות C#

אתה יכול גם להשתמש בקובץ Tiff מרובה עמודים כדי ליצור את ה-PNG המונפש על ידי הגדרת זמן הפריימים הרצוי. להלן השלבים ליצירת PNG מונפש מקובץ Tiff.

דוגמת הקוד הבאה מראה כיצד ליצור PNG מונפש מקובץ Tiff באמצעות C#.

// דוגמה 4. ייצוא לפורמט קובץ APNG מפורמט אחר שאינו מונפש
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;

using (Image image = Image.Load("img4.tif")) {
    // הגדרת משך ברירת המחדל של המסגרת
    image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms
    image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms
}

מקור Tiff

Source Tiff

PNG מונפש

TIFF ל-PNG מונפש

ייצא PNG מונפש ל-GIF מונפש באמצעות C#

אתה יכול גם לייצא תמונת PNG מונפשת ל-GIF מונפש שווה ערך. להלן השלבים לייצוא APNG ל-GIF.

דגימת הקוד הבאה מראה כיצד לייצא PNG מונפש ל-GIF באמצעות C#.

using System.Diagnostics;
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Apng;

using (Image image = Image.Load("elephant.png")) {
    // בודק את סוג התמונה הנטענת
    Debug.Assert(image is ApngImage);
    // שמור באותו פורמט
    image.Save("elephant_same_format.png");
    // ייצא לפורמט המונפש האחר
    image.Save("elephant.png.gif", new GifOptions());
}

מקור אנימציה PNG

תמונת PNG מונפשת

GIF מונפש

אנימציה PNG ל-GIF C#

סיכום

במאמר זה, למדת כיצד ליצור PNG מונפש ממקורות שונים באמצעות C#. המדריך צעד אחר צעד ודוגמאות הקוד הדגימו כיצד ליצור PNG מונפש מ-PNG של עמוד אחד ו-Tiff מרובה עמודים וכן לייצא PNG מונפש ל-GIF מונפש באמצעות C#. אתה יכול ללמוד עוד על מניפולציה של תמונות APNG באמצעות התיעוד של ה-API.

ראה גם