Ios 使用iphone';斯威夫特的照相机
我的目标是,当用户按下一个按钮时,几个视频帧被尽可能快地捕获,并最终保存到iphone的相册中 我不熟悉swift,所以我使用了一个非常糟糕的实现。我用0定义一个整数,并将其更改为用户按下按钮时要捕获的帧号Ios 使用iphone';斯威夫特的照相机,ios,iphone,swift,Ios,Iphone,Swift,我的目标是,当用户按下一个按钮时,几个视频帧被尽可能快地捕获,并最终保存到iphone的相册中 我不熟悉swift,所以我使用了一个非常糟糕的实现。我用0定义一个整数,并将其更改为用户按下按钮时要捕获的帧号 var number:Int? = 0 @IBAction func takeFrames(sender: UIButton) { self.number=5; } 然后在代理中,我将这些帧保存到相册: func captureOutput(captureOutput: AVCa
var number:Int? = 0
@IBAction func takeFrames(sender: UIButton) {
self.number=5;
}
然后在代理中,我将这些帧保存到相册:
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
if(number>0) {
let rawImage:UIImage = self.imageFromSampleBuffer(sampleBuffer)
let img = UIImagePNGRepresentation(rawImage)
let pngImg = UIImage.init(data: img!)
UIImageWriteToSavedPhotosAlbum(pngImg!, nil, nil, nil)
print("PNG frame write to photo album successfully")
number = number!-1;
}
}
我的问题是:
1) 我可以使用更优雅和安全的方式来使用按钮来控制帧捕获吗
2) 目前,我一个一个地保存帧,所以我没有达到尽快捕获帧的目标,我能捕获我需要的所有帧并最终将它们保存到相册中吗
提前谢谢 尝试这样做:
let imageArray: NSMutableArray?
for _ in 0 ..< 5 {
let rawImage:UIImage = self.imageFromSampleBuffer(sampleBuffer)
let img = UIImagePNGRepresentation(rawImage)
let pngImg = UIImage.init(data: img!)
imageArray?.addObject(pngImg!)
}
for image in imageArray! {
UIImageWriteToSavedPhotosAlbum(image as! UIImage, nil, nil, nil)
}
print("PNG frame write to photo album successfully")
让imageArray:NSMutableArray?
对于0..<5中的uu{
让rawImage:UIImage=self.imageFromSampleBuffer(sampleBuffer)
设img=uiImagePngRespresentation(rawImage)
让pngImg=UIImage.init(数据:img!)
imageArray?.addObject(pngImg!)
}
对于imageArray中的图像!{
UIImageWriteToSavedPhotosAlbum(图像为!UIImage,nil,nil,nil)
}
打印(“PNG帧成功写入相册”)
斯威夫特有时会混淆语句的含义。这将拍摄“5”张图像 谢谢。根据您的建议,我使用“var imageArray=[CMSampleBuffer?]()”来获取所有帧,最后进行转换并保存工作。对我的问题1有什么建议吗?@JunFang不确定。您可以尝试使用保护语句或try块。那肯定会使它安全。不过我觉得你很好。