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 API або встановити її у своїй програмі .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 в об’єкт класу Image.
- Збережіть 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 до анімованого GIF за допомогою C#
Ви також можете експортувати анімоване зображення PNG в еквівалентний анімований GIF. Нижче наведено кроки для експорту APNG у GIF.
- Завантажте анімований PNG в об’єкт Image.
- Експортуйте 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.