using Aspose.Imaging.Cloud.Sdk.Api;
using Aspose.Imaging.Cloud.Sdk.Model.Requests;
using Aspose.Imaging.Cloud.Sdk.Model;
using System;
using System.IO;

namespace Kb_Aspose.KB
{
    public class GifToPngConverter
    {
        public void GifToPng()
        {
            var clientID = "Client ID";
            var clientSecret = "Client Secret";
            var apiBaseUrl = "https://api.aspose.cloud";
            var localPath = "C:/Words/";

            var gifToPngImageApi = new ImagingApi(clientSecret, clientID, apiBaseUrl);

            // Source and output file names
            var inputFileName = "Source.gif";
            var outputFileName = "GiftoPng.png";

            try
            {
                // Upload the local image to Cloud Storage
                var inpuFileStream = File.Open(localPath + '/' + inputFileName, FileMode.Open);
                inpuFileStream.Position = 0;

                var uploadGifFileRequest = new UploadFileRequest(inputFileName, inpuFileStream, null);
                gifToPngImageApi.UploadFile(uploadGifFileRequest);

                var outputFormat = "png";
                var remoteFolder = null; // Input file is saved at the root of the storage
                var remoteStorage = null; // remote cloud Storage name

                var convertGifToPngRequest = new ConvertImageRequest(inputFileName, outputFormat, 
                                                                     remoteFolder, remoteStorage);

                var pngDataStream = gifToPngImageApi.ConvertImage(convertGifToPngRequest);

                pngDataStream.Position = 0;

                using (var fileStream = File.Create(localPath + outputFileName + "." + outputFormat))
                {
                    pngDataStream.Seek(0, SeekOrigin.Begin);
                    pngDataStream.CopyTo(fileStream);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}