Animasyonlu PNG (Taşınabilir Ağ Grafikleri), animasyonları birleştirmek için PNG biçiminin bir uzantısıdır. Animasyonlu GIF’ler gibi, animasyonları sunmak için APNG formatı kullanılır. APNG’nin GIF’e göre bir avantajı, 24 bit şeffaflığı desteklerken GIF yalnızca 8 bit’i desteklemesidir. Ayrıca APNG, animasyonlu bir GIF’e kıyasla daha yumuşak bir animasyon sağlar. Bu makalede, size bir görüntüden veya çok sayfalı Tiff’ten animasyonlu PNG (APNG) görüntüleri oluşturmayı ve C# (veya VB.NET) kullanarak programlı olarak APNG’yi animasyonlu GIF’e aktarmayı göstereceğim.
- Hareketli PNG Resimleri için .NET API
- Bir görüntüden animasyonlu PNG oluşturun
- Çok sayfalı Tiff dosyasından animasyonlu PNG oluşturun
- Animasyonlu PNG’yi animasyonlu GIF’e aktarın
Hareketli PNG Resimleri için .NET API
Aspose, C# veya VB.NET kullanarak animasyonlu PNG dahil olmak üzere popüler görüntü formatlarını oluşturmak veya değiştirmek için kendi .NET Görüntüleme API’sini sunar. Animasyonlu PNG görüntüleri oluşturmak veya dışa aktarmak için Aspose.Imaging for .NET’in yeteneklerinden yararlanacağız. API’nin DLL dosyasını indirebilir veya NuGet kullanarak .NET uygulamanıza yükleyebilirsiniz.
PM> Install-Package Aspose.Imaging
C# kullanarak bir Görüntüden Animasyonlu PNG oluşturun
Aspose.Imaging for .NET, özel animasyonu ve çerçeve süresini ayarlayarak PNG gibi tek sayfalık bir görüntüden animasyonlu bir PNG oluşturmanıza olanak tanır. Aşağıda bu işlemi gerçekleştirmek için adımlar verilmiştir.
- Image.Load(String) yöntemini kullanarak PNG görüntüsünü bir RasterImage nesnesine yükleyin.
- ApngOptions özelliklerini gereksinimlerinize göre ayarlayın.
- Animasyonlu PNG’yi oluşturmak için ApngImage sınıfını kullanın.
- ApngFrame.AdjustGamma(Single) yöntemini kullanarak her karenin gammasını güncelleyin.
- ApngImage.Save() yöntemini kullanarak animasyonlu PNG oluşturun.
Aşağıdaki kod örneği, C# kullanarak bir PNG görüntüsünden animasyonlu bir PNG’nin (APNG) nasıl oluşturulacağını gösterir.
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();
// ilk kareyi ekle
apngImage.AddFrame(sourceImage, FrameDuration);
// ara çerçeveler ekle
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);
}
// son kareyi ekle
apngImage.AddFrame(sourceImage, FrameDuration);
apngImage.Save();
}
}
C# kullanarak Çok Sayfalı Tiff’ten Animasyonlu PNG oluşturun
İstenen kare süresini ayarlayarak animasyonlu PNG’yi oluşturmak için çok sayfalı bir Tiff dosyası da kullanabilirsiniz. Aşağıdakiler, bir Tiff dosyasından animasyonlu PNG oluşturma adımlarıdır.
- Image sınıfının bir nesnesi içinde Tiff görüntüsünü yükleyin.
- Image.Save(String, ImageOptionsBase) yöntemini kullanarak Tiff’i APNG olarak kaydedin.
Aşağıdaki kod örneği, C# kullanarak bir Tiff dosyasından animasyonlu PNG’nin nasıl oluşturulacağını gösterir.
// Örnek 4. Diğer animasyonlu olmayan formattan APNG dosya formatına dışa aktarma
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using (Image image = Image.Load("img4.tif")) {
// Varsayılan çerçeve süresinin ayarlanması
image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms
image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms
}
Hareketli PNG
Animasyonlu PNG’yi C# kullanarak Animasyonlu GIF’e Aktarın
Animasyonlu bir PNG görüntüsünü eşdeğer bir animasyonlu GIF’e de aktarabilirsiniz. APNG’yi GIF’e dışa aktarma adımları aşağıdadır.
- Animasyonlu PNG’yi bir Image nesnesine yükleyin.
- Image.Save(String, GifOptions()) yöntemini kullanarak APNG’yi GIF’e aktarın.
Aşağıdaki kod örneği, C# kullanarak animasyonlu PNG’nin GIF’e nasıl aktarılacağını gösterir.
using System.Diagnostics;
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Apng;
using (Image image = Image.Load("elephant.png")) {
// Yüklenen görüntünün türünü kontrol etme
Debug.Assert(image is ApngImage);
// Aynı formatta kaydet
image.Save("elephant_same_format.png");
// Diğer animasyonlu biçime aktar
image.Save("elephant.png.gif", new GifOptions());
}
Kaynak Hareketli PNG
Animasyonlu GIF
Çözüm
Bu makalede, C# kullanarak farklı kaynaklardan animasyonlu bir PNG oluşturmayı öğrendiniz. Adım adım kılavuz ve kod örnekleri, tek sayfalı PNG’den ve çok sayfalı Tiff’ten animasyonlu PNG’nin nasıl oluşturulacağını ve C# kullanılarak animasyonlu PNG’nin animasyonlu bir GIF’e nasıl aktarılacağını gösterdi. API belgelerini kullanarak APNG görüntülerini işleme hakkında daha fazla bilgi edinebilirsiniz.