0

UIImagePicker のクローンですが、Assets ライブラリを使用するアプリを作成しています。ユーザーが写真を選択すると、画像の読み込みに少し時間がかかります。私が開発しているものと同じ機能を持つ写真アプリを使用すると、画像の読み込みが少し速くなることに気付きました。このサイトの別のレスポンダーが、写真アプリの機能を模倣するために次のように言及していると聞きました。

「最初にサムネイル画像をロードします (dispatch_async を使用するのが最適です)。これは非常に高速です。これが完了したら、上記のようにフルスクリーン画像をロードします。これは、スムーズなユーザー エクスペリエンスを提供するために Apple がフォト アプリで行っていることです。」

これを実現する方法のコードサンプルはありますか? 彼の言っていることを理解しているかどうかよくわかりません。

また、画像をロードするために使用しているコードを次に示します (画像をパラメーターとして別のビュー コントローラーに渡します)。

myImage = [UIImage imageWithCGImage:[[myAsset defaultRepresentation] fullScreenImage]];
4

1 に答える 1

4

このクラスALAssetには、サムネイルを取得するための 2 つのメソッドがあります。

- (CGImageRef)thumbnail
- (CGImageRef)aspectRatioThumbnail

アセットの全画面サイズのバージョンを取得するよりも速いに違いありません。

また、非同期操作でラップすることもできます。メインスレッドでUIを更新してください。おおよそ次のようになります。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    /* obtain the image here */
    dispatch_async(dispatch_get_main_queue(), ^{
        /* update screen here */
    });
    [pool drain];
});

ビデオのサムネイルを取得する必要がある場合は、AVAssetImageGenerator. それらを非同期に取得するメソッドがあります。

Apple のサンプル コードを探します (AVEditDemo や、おそらくアセット ライブラリを操作するその他のコード)。

于 2011-10-22T11:01:54.520 に答える