我正在开发一个应用程序的iPhone,其中包括一些标准"相机"的功能。节省卷相机真的是太慢,这需要有关的四秒在iPhone4。是否有某种方式提高速度?

如果你看一下默认的iPhone摄像机应用程序,它可以采取后续的照片没有大的拖延,并照片保存相当立即磁盘(如果你击小广场的最后一张照片,在下角的照片图书馆总是打开保存的图像,甚至如果你把一个很大的顺序)。

这里有两个snipplets的大量代码,我用得到的图像的缓冲区,然后向保存的照片的摄像头卷;我试图把一只之前和之后的第2snipplet,它确认了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];
         }
     }];
有帮助吗?

解决方案

我不是专家在这,但我感到好奇的话题。

我认为那里一直将大量时间,需要保存一个图像。这尤其是如果您愿意支持今后的iphone手机这很可能会创造更大的图像。

一件事,我认为可以改善性能的是如果您使用 -(void)writeImageDataToSavedPhotosAlbum: ... 而不是的 - (void)writeImageToSavedPhotosAlbum: ....JPEG提取和压缩工艺可以忽略。这是非常昂贵的,因为它把大约3MB的数据,对约15兆字节.

这是纯推测,但是如果JPEG提取/压缩加速硬件,硬件资源可以被占领的如果显示的摄像机出在同一时间。所以该过程必须由CPU。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top