gpt4 book ai didi

ios - 保存带有动画 gif 的图像

转载 作者:行者123 更新时间:2023-11-29 13:56:37 25 4
gpt4 key购买 nike

我正在创建一个类似 instagram 的功能,您可以在其中添加可拖动的文本、贴纸和 gif。我可以添加文字和贴纸并通过截图保存。

有没有一种方法可以保存添加了动画 gif 的图像。

有人可以提出解决方案吗?

谢谢。

最佳答案

你好,我用下面的方法实现了这个,我希望它对某人有帮助

1.在图像上放置 gif 后,我通过这种方法使用计时器截取 holderView 的屏幕截图。

@objc func gifScreenShot() {
guard let imageView = self.screenView else {
return
}

UIGraphicsBeginImageContextWithOptions(imageView.frame.size, true, 0.0)
imageView.drawHierarchy(in: imageView.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.gifImages.append(image!)

if gifImages.count == 50 {
self.stopTimer()
}
}

2.截图50次后,我停止计时

   func stopTimer() {
if gifTimer != nil {
gifTimer!.invalidate()
gifTimer = nil
DispatchQueue.global(qos: .background).async {
DispatchQueue.main.async {
self.createVideo()
}
}
}
}

3.并将所有截图组合成0.05秒的视频并保存为照片库

   func createVideo()  {
let settings = CXEImagesToVideo.videoSettings(codec: AVVideoCodecType.h264.rawValue, width: (gifImages[0].cgImage?.width)!, height: (gifImages[0].cgImage?.height)!)
let movieMaker = CXEImagesToVideo(videoSettings: settings)
movieMaker.createMovieFrom(images: gifImages){ (fileURL:URL) in
if self.isSaveVideo {
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: fileURL)
}) { saved, error in
self.loadingViewStop()
self.gifImages.removeAll()
if saved {
self.gifImages.removeAll()
DispatchQueue.main.async {
self.view.toastMessage("Video saved successfully".localized)
}
} else {
print(error)
}
}
} else {
self.gifImages.removeAll()
self.videoFileURL = fileURL
self.nextTapped(snap: nil)
}
}
}

一切如我所愿

关于ios - 保存带有动画 gif 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55259825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com