我正在开发一个包含一些标准“照相机”功能的iPhone应用程序。保存到相机胶卷真的太慢了,它需要在iPhone 4上四秒钟。有什么方法可以提高速度?writeImageToSavedPhotosAlbum太慢?
如果您查看默认的iPhone相机应用程序,它可以不需要大的延迟就可以拍摄后续照片,并且相片可以立即保存到磁盘中(如果您在拍摄最后一张照片时点击小方块,屏幕上,照片库始终会在保存的照片上打开,即使您拍摄了大量照片)。
下面是我用来从缓冲区获取图像然后将照片保存在相机胶卷中的重要代码的两个snipplets;我试图在第二个snipplet之前和之后放置一个NSLog,并确认了4秒的延迟来完成保存过程。
[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error)
{
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];
...
ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease];
NSLog(@"SCATTO: Inizio salvataggio in library...");
[library writeImageToSavedPhotosAlbum:[image CGImage] metadata:exifAttachments_dictionary completionBlock:^(NSURL *newURL, NSError *error) {
if (error){
NSLog(@"SCATTO: Salvataggio in library: ERRORE");
} else {
NSLog(@"SCATTO: Salvataggio in library: OK");
[self loadNewestPhoto];
}
}];
从你的代码中,我认为这是全部异步完成的。我不明白为什么延迟会成为问题? – elslooo
这不是问题,但如果延迟时间缩短到最低限度,让用户直接进入照片库并打开他刚刚拍摄的照片将会很好... – flip79