Animated PNG(Portable Network Graphics) هو امتداد لتنسيق 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 for .NET لإنشاء أو تصدير صور PNG متحركة. يمكنك إما تنزيل DLL الخاص بواجهة برمجة التطبيقات أو تثبيته داخل تطبيق .NET الخاص بك باستخدام NuGet.

PM> Install-Package Aspose.Imaging

إنشاء PNG متحركة من صورة باستخدام C#

Aspose.Imaging for .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

[المصدر Tiff](الصور / MultiPage-Tiff.tif)

PNG متحركة

TIFF إلى PNG متحركة

تصدير PNG Animated إلى 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.

أنظر أيضا