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 المتحركة
- إنشاء PNG متحركة من صورة
- قم بإنشاء PNG متحرك من ملف Tiff متعدد الصفحات
- تصدير صور PNG المتحركة إلى صورة GIF متحركة
.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 في كائن RasterImage باستخدام طريقة Image.Load(String).
- اضبط ApngOptions الخصائص وفقًا لمتطلباتك.
- استخدم فئة ApngImage لإنشاء ملف PNG متحرك.
- قم بتحديث جاما لكل إطار باستخدام طريقة ApngFrame.AdjustGamma (Single).
- قم بإنشاء PNG متحركة باستخدام طريقة ApngImage.Save().
يوضح نموذج التعليمات البرمجية التالي كيفية إنشاء صورة 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.
- قم بتحميل صورة Tiff داخل كائن من فئة صورة.
- احفظ Tiff كـ APNG باستخدام طريقة Image.Save (String، ImageOptionsBase).
يوضح نموذج التعليمات البرمجية التالي كيفية إنشاء 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 Animated إلى GIF المتحركة باستخدام C#
يمكنك أيضًا تصدير صورة PNG متحركة إلى صورة GIF متحركة مكافئة. فيما يلي خطوات تصدير APNG إلى GIF.
- قم بتحميل PNG المتحركة إلى كائن صورة.
- قم بتصدير APNG إلى GIF باستخدام طريقة Image.Save (String، GifOptions()).
يوضح نموذج التعليمات البرمجية التالي كيفية تصدير صور 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 متحركة من مصادر مختلفة باستخدام C#. يوضح الدليل التدريجي وعينات التعليمات البرمجية كيفية إنشاء PNG متحركة من صفحة واحدة PNG و Tiff متعدد الصفحات بالإضافة إلى تصدير PNG متحركة إلى GIF متحركة باستخدام C#. يمكنك معرفة المزيد حول معالجة صور APNG باستخدام وثائق API.