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
}
ที่มา ทิฟ
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