gpt4 book ai didi

ios - 将一系列捕获的图像存储到数组中

转载 作者:行者123 更新时间:2023-11-30 13:47:47 24 4
gpt4 key购买 nike

在下面的函数(didPressTakePhoto)中,我尝试拍摄一系列图片(本例中为 10 张),将它们存储到数组中并将它们显示为“gif”中的动画。但程序不断崩溃,我不知道为什么。这一切都是通过单击按钮完成的,因此得名函数。另外,我尝试将动画代码放在 for 循环之外,但 imageArray 会由于某种原因失去它的值。

func didPressTakePhoto(){

if let videoConnection = stillImageOutput?.connectionWithMediaType(AVMediaTypeVideo){
videoConnection.videoOrientation = AVCaptureVideoOrientation.Portrait
stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: {
(sampleBuffer, error) in

//var counter = 0
if sampleBuffer != nil {

for var index = 0; index < 10; ++index {

let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
let dataProvider = CGDataProviderCreateWithCFData(imageData)
let cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, CGColorRenderingIntent.RenderingIntentDefault)
var imageArray: [UIImage] = []
let image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Right)

imageArray.append(image)
imageArray.insert(image, atIndex: index++)

self.tempImageView.image = image
self.tempImageView.hidden = false


//UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)

var gif: UIImageView!
gif.animationImages = imageArray

gif.animationRepeatCount = -1
gif.animationDuration = 1
gif.startAnimating()

}

}


})
}


}

最佳答案

切勿尝试创建图像数组(即,像您所做的那样创建 [UIImage])。 UIImage 非常大,因此许多图像的数组巨大,您将耗尽内存并崩溃。

  • 将图像保存到磁盘,仅维护对它们的引用(即它们的名称数组)。

  • 在界面中使用图像之前,请将它们缩小到该界面所需的实际物理尺寸。在屏幕尺寸(或更小)的显示器上使用全尺寸图像是一种巨大的能源浪费。您可以使用 ImageIO 框架从磁盘获取图像的“缩略图”较小版本,而不会浪费内存。

关于ios - 将一系列捕获的图像存储到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34707340/

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