我正在開發一個包含一些標準「照相機」功能的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