writeimagetosavedphotosalbumが遅すぎますか?
-
22-10-2019 - |
質問
標準の「カメラ」機能を含むiPhoneアプリを開発しています。カメラロールへの保存は非常に遅すぎます。iPhone4で約4秒が必要です。速度を改善する方法はありますか?
デフォルトのiPhoneカメラアプリを見ると、大きな遅延なしで後続の写真を撮ることができ、写真は非常に即座にディスクに保存されます(最後の写真をクリックすると、画面の下隅にある最後の写真をクリックすると、写真ライブラリは、たとえあなたがそれらの大きなシーケンスを取っていても、常に保存された画像に開きます)。
これは、バッファから画像を取得し、カメラロールに写真を保存するために使用した重要なコードの2つのスニップレットです。 2回目のスニップレットの前後に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];
}
}];
解決
私はこれの専門家ではありませんが、このトピックに興味があります。
画像を保存するのに必要な時間が常にあると思います。これは、今日よりも大きな画像を作成する可能性が最も高い将来のiPhoneをサポートしたい場合に特に当てはまります。
パフォーマンスを改善するかもしれないと思うことの1つは、使用する場合です -(void)writeImageDataToSavedPhotosAlbum: ...
それ以外の - (void)writeImageToSavedPhotosAlbum: ...
. 。その後、JPEG抽出および圧縮プロセスを無視できます。約3MBのデータを約15MBに変換するため、非常に費用がかかります。
これは純粋な推測ですが、JPEG抽出/圧縮がハードウェアが加速される場合、カメラの出力を同時に表示するとハードウェアリソースが占める可能性があります。したがって、プロセスはCPUによって行わなければなりません。