这可能是一个业余问题,但是虽然我已经可扩展地搜索了Stack Overflow,但我还没有能够为我的具体问题找到答案。
通过遵循Github示例,我成功地从一组图像创建了一个GIF文件:
func createGIF(with images: [NSImage], name: NSURL, loopCount: Int = 0, frameDelay: Double) {
let destinationURL = name
let destinationGIF = CGImageDestinationCreateWithURL(destinationURL, kUTTypeGIF, images.count, nil)!
// This dictionary controls the delay between frames
// If you don't specify this, CGImage will apply a default delay
let properties = [
(kCGImagePropertyGIFDictionary as String): [(kCGImagePropertyGIFDelayTime as String): frameDelay]
]
for img in images {
// Convert an NSImage to CGImage, fitting within the specified rect
let cgImage = img.CGImageForProposedRect(nil, context: nil, hints: nil)!
// Add the frame to the GIF image
CGImageDestinationAddImage(destinationGIF, cgImage, properties)
}
// Write the GIF file to disk
CGImageDestinationFinalize(destinationGIF)
}
现在,我想将实际的GIF转换为NSData,以便将其上传到Firebase,并能够在其他设备上检索它。
为了实现我的目标,我有两个选择:要么找到如何使用上面的代码来提取创建的GIF(这似乎是在创建文件时直接创建),要么使用函数上的图像&#39 ; s参数创建一个新的GIF,但保持NSData格式。
有人对如何做到这一点有任何想法吗?
答案 0 :(得分:0)
由于没有人继续超过六个月,我将在这里发表@Sachin Vas的回答:
您可以使用NSData(contentsOf: URL)