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

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

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้าง 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 เคลื่อนไหว

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

ภาพเคลื่อนไหว PNG

GIF เคลื่อนไหว

ภาพเคลื่อนไหว PNG เป็น GIF C#

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีสร้าง PNG แบบเคลื่อนไหวจากแหล่งต่างๆ โดยใช้ C# คำแนะนำทีละขั้นตอนและตัวอย่างโค้ดแสดงวิธีสร้าง PNG เคลื่อนไหวจาก PNG หน้าเดียวและ Tiff หลายหน้า ตลอดจนส่งออก PNG เคลื่อนไหวเป็น GIF เคลื่อนไหวโดยใช้ C# คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการจัดการอิมเมจ APNG โดยใช้เอกสารประกอบของ API

ดูสิ่งนี้ด้วย