2011年5月26日木曜日

アルバムに保存されている写真データを取得する 2

ALAssetsGroup から ALAsset を取得する

メソッド:*1
Tasks → Enumerating Assets
- enumerateAssetsUsingBlock:

→ パラメータに group の asset を取得する処理を block で記述する。

    ALAssetsGroupEnumerationResultsBlock assetsEnumerationBlock = ^(ALAsset *result, NSUInteger index, BOOL *stop)
    {
        if (result) {
        // asset の取得に成功した場合
            [assets addObject:result];
        }
    };

    [assetsGroup enumerateAssetsUsingBlock:assetsEnumerationBlock];

--------------------

asset を取得する際にフィルタリングができる*2

メソッド:
Tasks → Filtering
- setAssetsFilter:

設定できるフィルタは以下の3種類
allAssets
allPhotos
allVideos

    // 写真を取得するフィルタを設定する
    ALAssetsFilter *onlyPhotosFilter = [ALAssetsFilter allPhotos];
    [assetsGroup setAssetsFilter:onlyPhotosFilter];
    // ALAssetsGroup から ALAsset を取得するメソッドを呼び出す
    [assetsGroup enumerateAssetsUsingBlock:assetsEnumerationBlock];

参照:
*1
ALAssetsGroup Class Reference
*2
ALAssetsFilter Class Reference

wwwdc2010 Session421/iOS/MyImagePicker/

2011年5月21日土曜日

アルバムに保存されている写真データを取得する 1

ALAssetsLibrary から ALAssetsGroup を取得する

メソッド:*1
Enumerating Assets
- enumerateGroupsWithTypes:usingBlock:failureBlock:

→ Aseets group を Type of Asset から指定する。
→ usingBlock: パラメータに assets group を取得する処理を block で記述する。
→ failureBlock: データのアクセスに失敗したときの処理を blocks で記述する。
-----------------------

サンプルソース*2
NSUInteger groupTypes = ALAssetsGroupAlbum | ALAssetsGroupEvent | ALAssetsGroupFaces;
[assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:failureBlock];
サンプルでは group type の絞り込みを行っているが、現時点(2011.05)時点では「ALAssetsGroupAll」を指定しないと取得ができない。

usingBlock:listGroupBlock の実装は次のとおり。
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
        
    if (group) {
        // group を配列に格納する
        [groups addObject:group];
    } else {
        // group を 数え終わったあとの処理を行う ex) データの表示
        [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
    }
};


参照:
*1
ALAssetsLibrary Class Reference
*2
wwwdc2010 Session421/iOS/MyImagePicker/

2011年5月16日月曜日

Assets Library Framework

Assets Library Framework
写真アプリから写真や動画にアクセスするためのフレームワーク

主なクラス
ALAsset
ALAssetRepresentation
ALAssetsFilter
ALAssetsGroup
ALAssetsLibrary

以下の英文は、ライブラリのヘッダファイルに書いてあるのを転載した。

ALAssetsLibrary.h
This class represents the set of all videos and photos that are under the control of the Photos application.
This includes those that are in the saved photos album and those coming from iTunes.
It is used to retrieve the list of all asset groups and to save images and videos into the Saved Photos album.
memo:
アルバムやiTunes に保存されているデータを持っている
asset group のデータやアルバムに保存さている写真や動画を読み出せる
-------------

ALAssetsGroup.h
An ALAssetsGroup is a ordered set of assets.
The order of its elements is the order that the user sees in the Photos application.
Groups are synced via iTunes, created to hold the users saved photos, or created during camera import.
None of the groups can be directly modified using this API. Only the saved photos group can be indirectly modified
by saving images or videos using the ALAssetsLibrary class.
memo:
ALAssetsGroup は、assets の順序集合(ordered set)である
そのひとつひとつの要素は、アプリ(例えば写真アルバムアプリのアルバムのこと?)から見える情報の単位
このAPI からデータをいいじることはできない。出来るのは ALAssetsLibrary class
-------------

ALAssetsFilter.h
This class encapsulates filtering criteria to be used when retrieving assets from a group.
memo:
assets group をフィルタリングする
すべての assets とか、写真だけとか、動画だけとか
-------------

ALAsset.h
An ALAsset represents a photo or a video managed by the Photos application.
Assets can have multiple representations, like a photo which has been shot in RAW and JPG.
Furthermore, representations of the same asset may have different dimensions.
memo:
ALAsset とは、アプリが扱うひとつひとつの写真、動画を表す
asset は、複数の represention を扱うことができる。例えば、ひとつの写真の RAW*1 と JPG
同じ asset の 表現(represention::RAW とか JPG などの画像データのこと?) が異なる特徴(dimensions)をもつこともある
-------------

ALAssetRepresentation.h
An ALAssetRepresentation encapsulates one of the representations of a given ALAsset.
For example: in the case of a camera shooting RAW + JPEG, the resulting asset will have two representations,
one for the RAW file and one for the JPEG file.
memo:
ALAsset から得られるひとつの representation を含む
RAW と JPG のふたつのデータを持つ画像の場合、asset はふたつの representation をもつ
-------------

*1
RAW画像(ローがぞう)は、デジタルカメラなどにおける完成状態にされていない画像データのこと

参考:
Assets Library Framework Reference