为了账号安全,请及时绑定邮箱和手机立即绑定

通过iOS创建和导出动画gif吗?

通过iOS创建和导出动画gif吗?

繁花不似锦 2019-11-22 11:01:27
我在iOS应用程序中有一系列用户自定义图像,这些图像以简单的逐帧翻转书样式进行动画处理。我的问题是:有没有办法允许用户将其动画导出为动画gif?理想情况下,我希望使他们能够通过电子邮件发送电子邮件,社交共享(T / FB)或(最坏的情况。)将动画gif保存到他们的文档文件夹中,以便通过iTunes进行检索。我知道如何将.png保存到图片库,并且找到了一种将动画录制为QT文件的方法(http://www.cimgf.com/2009/02/03/record-your-core-animation -animation /),但我还没有找到一种方法来踢出普通的老式gif动画。我在Core Animation或其他地方缺少什么吗?有没有人可以推荐的方法,框架或资源?很抱歉,这个问题过于笼统-努力寻找起点。
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

对于Swift 3


import Foundation

import UIKit

import ImageIO

import MobileCoreServices


extension UIImage {

    static func animatedGif(from images: [UIImage]) {

        let fileProperties: CFDictionary = [kCGImagePropertyGIFDictionary as String: [kCGImagePropertyGIFLoopCount as String: 0]]  as CFDictionary

        let frameProperties: CFDictionary = [kCGImagePropertyGIFDictionary as String: [(kCGImagePropertyGIFDelayTime as String): 1.0]] as CFDictionary


        let documentsDirectoryURL: URL? = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)

        let fileURL: URL? = documentsDirectoryURL?.appendingPathComponent("animated.gif")


        if let url = fileURL as CFURL? {

            if let destination = CGImageDestinationCreateWithURL(url, kUTTypeGIF, images.count, nil) {

                CGImageDestinationSetProperties(destination, fileProperties)

                for image in images {

                    if let cgImage = image.cgImage {

                        CGImageDestinationAddImage(destination, cgImage, frameProperties)

                    }

                }

                if !CGImageDestinationFinalize(destination) {

                    print("Failed to finalize the image destination")

                }

                print("Url = \(fileURL)")

            }

        }

    }

}

我已经根据上面的答案将其转换。希望对您有所帮助。


可作为要点。


欢迎进行编辑。


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 936 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信