PNG متحرک (گرافیک شبکه قابل حمل) یک فرمت فرمت PNG برای ترکیب انیمیشن ها است. درست مانند GIF های متحرک، از فرمت APNG برای ارائه انیمیشن ها استفاده می شود. مزیت APNG نسبت به GIF این است که از شفافیت 24 بیتی پشتیبانی می کند در حالی که GIF فقط از 8 بیت پشتیبانی می کند. علاوه بر این، APNG در مقایسه با GIF متحرک، انیمیشن روان‌تری ارائه می‌دهد. در این مقاله، من به شما نشان خواهم داد که چگونه تصاویر متحرک PNG (APNG) را از یک تصویر یا Tiff چند صفحه ای ایجاد کنید و با استفاده از C# (یا VB.NET) APNG را به GIF متحرک صادر کنید.

NET API برای تصاویر متحرک PNG

Aspose .NET Imaging API خود را برای ایجاد یا دستکاری فرمت های تصویری محبوب از جمله PNG متحرک با استفاده از C# یا VB.NET ارائه می دهد. ما از قابلیت های Aspose.Imaging برای دات نت برای ایجاد یا صادرات تصاویر متحرک PNG استفاده خواهیم کرد. می توانید DLL API را دانلود یا با استفاده از NuGet در برنامه دات نت خود نصب کنید.

PM> Install-Package Aspose.Imaging

ایجاد PNG متحرک از یک تصویر با استفاده از C#

Aspose.Imaging for .NET به شما امکان می دهد یک PNG متحرک از یک تصویر تک صفحه ای مانند PNG با تنظیم انیمیشن سفارشی و مدت زمان فریم ایجاد کنید. مراحل زیر برای انجام این عملیات آورده شده است.

  • با استفاده از روش Image.Load(String) تصویر PNG را در یک شی RasterImage بارگذاری کنید.
  • ویژگی های ApngOptions را مطابق با نیاز خود تنظیم کنید.
  • از کلاس ApngImage برای ایجاد PNG متحرک استفاده کنید.
  • گامای هر فریم را با استفاده از روش ApngFrame.AdjustGamma(Single) به روز کنید.
  • با استفاده از روش ApngImage.Save() 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 متحرک از Multi-Page 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

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 متحرک از منابع مختلف با استفاده از سی شارپ را یاد گرفتید. راهنمای گام به گام و نمونه کد نحوه ایجاد PNG متحرک از PNG تک صفحه ای و Tiff چند صفحه ای و همچنین صادرات PNG متحرک به یک GIF متحرک با استفاده از C# را نشان می دهد. می توانید در مورد دستکاری تصاویر APNG با استفاده از اسناد API اطلاعات بیشتری کسب کنید.

همچنین ببینید