애니메이션 PNG(Portable Network Graphics)는 애니메이션을 통합하기 위한 PNG 형식의 확장입니다. 애니메이션 GIF와 마찬가지로 APNG 형식은 애니메이션을 표시하는 데 사용됩니다. GIF보다 APNG의 장점은 24비트 투명도를 지원하는 반면 GIF는 8비트만 지원한다는 것입니다. 또한 APNG는 애니메이션 GIF에 비해 부드러운 애니메이션을 제공합니다. 이 기사에서는 이미지 또는 다중 페이지 Tiff에서 애니메이션 PNG(APNG) 이미지를 만들고 C#(또는 VB.NET)을 사용하여 프로그래밍 방식으로 APNG를 애니메이션 GIF로 내보내는 방법을 보여줍니다.

애니메이션 PNG 이미지용 .NET API

Aspose는 .NET Imaging API를 제공하여 C# 또는 VB.NET을 사용하여 애니메이션 PNG를 비롯한 인기 있는 이미지 형식을 생성하거나 조작합니다. .NET용 Aspose.Imaging의 기능을 활용하여 애니메이션 PNG 이미지를 만들거나 내보낼 것입니다. API의 DLL을 다운로드하거나 NuGet을 사용하여 .NET 애플리케이션 내에 설치할 수 있습니다.

PM> Install-Package Aspose.Imaging

C#을 사용하여 이미지에서 애니메이션 PNG 만들기

.NET용 Aspose.Imaging을 사용하면 사용자 지정 애니메이션 및 프레임 지속 시간을 설정하여 PNG와 같은 단일 페이지 이미지에서 애니메이션 PNG를 만들 수 있습니다. 다음은 이 작업을 수행하는 단계입니다.

다음 코드 샘플은 C#을 사용하여 PNG 이미지에서 애니메이션 PNG(APNG)를 만드는 방법을 보여줍니다.

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();
    }
}

C#을 사용하여 다중 페이지 Tiff에서 애니메이션 PNG 만들기

다중 페이지 Tiff 파일을 사용하여 원하는 프레임 시간을 설정하여 애니메이션 PNG를 만들 수도 있습니다. 다음은 Tiff 파일에서 애니메이션 PNG를 만드는 단계입니다.

다음 코드 샘플은 C#을 사용하여 Tiff 파일에서 애니메이션 PNG를 만드는 방법을 보여줍니다.

// 예 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로

C#을 사용하여 애니메이션 PNG를 애니메이션 GIF로 내보내기

애니메이션 PNG 이미지를 동등한 애니메이션 GIF로 내보낼 수도 있습니다. 다음은 APNG를 GIF로 내보내는 단계입니다.

다음 코드 샘플은 C#을 사용하여 애니메이션 PNG를 GIF로 내보내는 방법을 보여줍니다.

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#

결론

이 기사에서는 C#을 사용하여 다양한 소스에서 애니메이션 PNG를 만드는 방법을 배웠습니다. 단계별 가이드 및 코드 샘플은 단일 페이지 PNG 및 다중 페이지 Tiff에서 애니메이션 PNG를 만드는 방법과 C#을 사용하여 애니메이션 PNG를 애니메이션 GIF로 내보내는 방법을 보여주었습니다. API 설명서를 사용하여 APNG 이미지 조작에 대해 자세히 알아볼 수 있습니다.

또한보십시오