PNG متحرک (گرافیک شبکه قابل حمل) یک فرمت فرمت PNG برای ترکیب انیمیشن ها است. درست مانند GIF های متحرک، از فرمت APNG برای ارائه انیمیشن ها استفاده می شود. مزیت APNG نسبت به GIF این است که از شفافیت 24 بیتی پشتیبانی می کند در حالی که GIF فقط از 8 بیت پشتیبانی می کند. علاوه بر این، APNG در مقایسه با GIF متحرک، انیمیشن روانتری ارائه میدهد. در این مقاله، من به شما نشان خواهم داد که چگونه تصاویر متحرک PNG (APNG) را از یک تصویر یا Tiff چند صفحه ای ایجاد کنید و با استفاده از C# (یا VB.NET) APNG را به GIF متحرک صادر کنید.
- NET API برای تصاویر متحرک PNG
- PNG متحرک از یک تصویر ایجاد کنید
- PNG متحرک را از فایل Tiff چند صفحه ای ایجاد کنید
- PNG متحرک را به 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 است.
- بارگذاری تصویر Tiff در یک شی از کلاس Image.
- با استفاده از روش Image.Save(String, ImageOptionsBase) Tiff را به عنوان APNG ذخیره کنید.
نمونه کد زیر نحوه ایجاد 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
PNG متحرک
صادرات PNG متحرک به GIF متحرک با استفاده از C#
همچنین می توانید یک تصویر PNG متحرک را به یک GIF متحرک معادل صادر کنید. مراحل زیر برای صادرات APNG به GIF آمده است.
- PNG متحرک را در یک شیء Image بارگیری کنید.
- با استفاده از روش Image.Save(String, GifOptions()) 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 متحرک
GIF متحرک
نتیجه
در این مقاله نحوه ایجاد یک PNG متحرک از منابع مختلف با استفاده از سی شارپ را یاد گرفتید. راهنمای گام به گام و نمونه کد نحوه ایجاد PNG متحرک از PNG تک صفحه ای و Tiff چند صفحه ای و همچنین صادرات PNG متحرک به یک GIF متحرک با استفاده از C# را نشان می دهد. می توانید در مورد دستکاری تصاویر APNG با استفاده از اسناد API اطلاعات بیشتری کسب کنید.