如何降低xamarin.ios中生成的gif的速度?

问题描述 投票:0回答:1

我在xamarin.forms项目中创建了一个服务,用于从四个下载的框架生成gif。 android端运行良好,但是在iOs端出现了问题,即创建gif的速度太快,而与设置的延迟值无关。这是我的课程:

public class GifService : IGifService
{
    public string CreateGif(string frame1Path, string frame2Path, string frame3Path, string frame4Path,string webId,string path="")
    {
        List<UIImage> listOfFrame = new List<UIImage>();

        UIImage image1 = new UIImage(frame1Path);

        listOfFrame.Add(image1);

        UIImage image2 = new UIImage(frame2Path);

        listOfFrame.Add(image2);

        UIImage image3 = new UIImage(frame3Path);

        listOfFrame.Add(image3);

        UIImage image4 = new UIImage(frame4Path);

        listOfFrame.Add(image4);

        NSMutableDictionary fileProperties = new NSMutableDictionary();
        fileProperties.Add(CGImageProperties.GIFLoopCount, new NSNumber(0));

        NSMutableDictionary frameProperties = new NSMutableDictionary();
        frameProperties.Add(CGImageProperties.GIFDelayTime, new NSNumber(5f));

        NSUrl documentsDirectoryUrl = NSFileManager.DefaultManager.GetUrl(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomain.User,null, true,out _);
        NSUrl fileUrl = documentsDirectoryUrl.Append(webId + ".gif",false);

        var destination = CGImageDestination.Create(fileUrl, MobileCoreServices.UTType.GIF, 4);
        destination.SetProperties(fileProperties);

        foreach(var frame in listOfFrame)
        {
            var cgImage = frame.CGImage;
            if(cgImage!= null)
            {
                destination.AddImage(cgImage, frameProperties);
            }
        }

        if (!destination.Close())
        {
            Console.WriteLine("Failed to finalize the image destination");
        }
        return fileUrl.Path;
    }
}

我认为问题是CGImageProperties.GIFDelayTime被忽略,但我不知道为什么。我该如何解决这个问题?

c# swift xamarin xamarin.ios gif
1个回答
0
投票

经过一番尝试,我终于找到了一种解决方案,该方案可以生成带有延迟的gif图像。我不知道为什么,但是按照我在问题中显示的方式,这些选项被忽略了。这里是一个可行的解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.