В своем приложении я делаю фотографию с камеры, а затем пользователь может добавить на нее стикер.Я хочу сохранить результат в Firebase Storage (в формате gif)
Таким образом, чтобы подвести итог, я хочу преобразовать свой UIview в Данные, чтобы сохранить его в Firebase (Storage.storage().reference().child("Gif").putData(data, metadata: nil, completion: { (metadata, error) in })
Iя пробовал это:
let yourViewToData = NSKeyedArchiver.archivedData(withRootObject: self.canvasView)
но результат не gif-файл
Я пробовал подобную функцию, но не могу перехватить данные на ней, и я не уверен врезультат:
let img = self.canvasView.toImage()
animatedGif(from: [img])
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)")
}
}
}
Есть идеи, как сохранить свой UIView в gif-файл в Firebase Storage?
Я ищу альтернативное решение. Возьмите 15 скриншотов UImage из моегоUIView, чтобы сделать gif позже. У меня есть эта функция:
func toImage() -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.isOpaque, 0.0)
self.drawHierarchy(in: self.bounds, afterScreenUpdates: false)
let snapshotImageFromMyView = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return snapshotImageFromMyView!
}
Кто-нибудь знает, как я могу сделать как 15 скриншот с этой функцией? Спасибо
Спасибо!