Assets Library 手習い KatokichiSoft
自己紹介 KatokichiSoft   Site :  http://cielo.rojo.jp   Twitter :       @hkato193  開発アプリ:    「 Metronome PRO 」
Assets Library とは iOS4.0 から追加されたフレームワーク AssetsLibrary.framework 「写真 (Photos) 」アプリで管理している画像 / ビデオにアクセスする手段を提供してくれます
Assets Library を使うとこんなことが カメラロールやフォトライブラリのデータに直接アクセスできる マイイメージピッカー! お仕着せのあのイメージピッカー要らず! 必要なデータを必要なだけ得られます メモリに優しい! メタデータにも簡単アクセスできます アドホックなコード要らず!
参考資料 残念ながらまだ少ないです WWDC2010 Session421 - Incorporating the Camera and Photo Library in your App 9:30 〜 サンプルプロジェクト  iOS/MyImagePicker/
「アセット」ってなに?
アセットってなに? asset /ǽset/ 名 詞 1   (…にとって)役にたつもの[こと] ,  価値あるもの ⦅ to, for ... ⦆ ;長所 ,  美点(⇔ liability ) an asset in negotiation |交渉の際にプラスになるもの count beauty as an asset |美しいことを利点と心得る He is a most valuable asset to the firm. |彼は会社にとって貴重な人材だ . 2   資産の一項目 ,  ( 1 個の)財産 . 3 ⦅〜 s ⦆ ①  流動資産;資産 ,  財産 fixed  [ intangible, net ]  assets |固定[無形 ,  純]財産 cultural assets |文化財 seize  [ take over ]  the assets of ... |…の財産を接収する . ②  (債務弁済に充当される)財産 . ③  (特に負債資本に対し)資産[財産]項目 . ⇒ PROPERTY[ 類語 ] ④  〘法律〙 (死者の債務遺贈に充当されるべき)遺産 . 4   情報提供者 .   プログレッシブ英和・和英中辞典
アセットってなに? asset /ǽset/ 名 詞 1   (…にとって)役にたつもの[こと] ,  価値あるもの ⦅ to, for ... ⦆ ;長所 ,  美点(⇔ liability ) an asset in negotiation |交渉の際にプラスになるもの count beauty as an asset |美しいことを利点と心得る He is a most valuable asset to the firm. |彼は会社にとって貴重な人材だ . 2   資産の一項目 ,  ( 1 個の)財産 . 3 ⦅〜 s ⦆ ①  流動資産;資産 ,  財産 fixed  [ intangible, net ]  assets |固定[無形 ,  純]財産 cultural assets |文化財 seize  [ take over ]  the assets of ... |…の財産を接収する . ②  (債務弁済に充当される)財産 . ③  (特に負債資本に対し)資産[財産]項目 . ⇒ PROPERTY[ 類語 ] ④  〘法律〙 (死者の債務遺贈に充当されるべき)遺産 . 4   情報提供者 .  −−− プログレッシブ英和・和英中辞典から抜粋
アセットってなに? 同じ意味を持ったデータのまとまりを扱う単位(資産) ファイル形式( JPEG, RAW, etc ) サムネイル画像とビデオデータ ファイル名ではなく URL で特定 アセットを介してデータを取り扱う(情報提供者) データ∈アセット。アセット == データ、ではないです
登場人物(クラス編) クラスの階層関係。それぞれ何を区別しているかに注目。 クラス 役割 ALAssetsLibrary フォトライブラリにアクセスするときの起点 ALAssetsGroup イベント。「最近の 12 ヶ月」「美味しかったマツタケ」「高倉健」など ALAsset アセットそのもの。画像やビデオ ALAssetRepresentation 画像データ
登場人物(使用技術編) Proxy デザインパターン データには代理を介してアクセスします Blocks iOS4.0 で使えるようになった構文です。ラムダ / クロージャ UTI ( Uniform Type Identifier ) データ種類の識別子。 "public.jpeg" や "com.apple.quicktime-movie" とか URL データの場所。 "assets-library://asset/asset.jpg?id=3224&ext=jpg" みたく使われます
3つの利用方法
1.  写真のデータに辿り着こう イメージピッカーと同じようにトップダウンでデータに辿り着く方法です 2.  イメージピッカーと連携しよう イメージピッカーで選んだ写真からアセットを割り出します 3. Exif 情報を操作しよう 画像データをメタデータと共に保存します  こんなことを紹介します
1.  写真のデータに辿り着こう! 手順: ALAssetsLibrary から ALAssetsGroup を取得 (グループのポスター画像を取得)    ALAssetsGroup から ALAsset を取得 (フィルターで写真/ビデオを指定) (アセットのサムネイルを取得)    ALAsset から ALAssetRepresentation を取得 (サイズ、ヘッダ情報などのメタデータを取得)    ALAssetRepresentation から CGImageRef ( or ビデオ)を取得
写真のデータに辿り着こう! 【 ALAssetsLibrary から ALAssetsGroup を取得 (1) 】 ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init]; ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock =       ^(ALAssetsGroup *group, BOOL *stop) {          if (group) {            //  グループを配列に格納するなど          else             //  グループ数え上げの終了。データ表示など          };     } ALAssetsGroup が 途切れるまで 数え上げ
写真のデータに辿り着こう! 【 ALAssetsLibrary から ALAssetsGroup を取得 (2) 】 数え上げの実行。グループのタイプを絞り込んでいることに注目 NSUInteger groupTypes =  ALAssetsGroupAlbum |                          ALAssetsGroupEvent |                          ALAssetsGroupFaces ; [assetsLibrary  enumerateGroupsWithTypes :groupTypes      usingBlock :listGroupBlock      failureBlock :^(NSError *error){NSLog(@"error:%@",error);}];
写真のデータに辿り着こう! グループの代表になる画像は posterImage メソッドで取得できます。   iPhone3GS だと 55×55 か 132×132 の画像(ルール不明) iPhone4 は、すみません、未確認です  CGImageRef  posterImageRef = [group  posterImage ]; UIImage  *posterImage =      [ UIImage   imageWithCGImage :posterImageRef];
写真のデータに辿り着こう! 【 ALAssetsGroup から ALAsset を取得】 //  グループ名は [assetsGroup valueForProperty:ALAssetsGroupPropertyName]; ALAssetsGroupEnumerationResultsBlock assetsEnumerationBlock =      ^(ALAsset *result, NSUInteger index, BOOL *stop) {         if (result) {              // Asset の取得成功              NSLog(@"asset:%@", result);         }     }; [assetsGroup  enumerateAssetsUsingBlock :assetsEnumerationBlock]; ALAsset が 途切れるまで 数え上げ 最後は nil がやってくることに注意!!
写真のデータに辿り着こう! 選択肢は 3 つ allAssets  :  デフォルトフィルター無し allPhotos  :  写真だけ allVideos  :  ビデオだけ ALAssetFilter  *filter    = [ALAssetsFilter allPhotos]; [ group      setAssetsFilter :filter]; [ group        enumerateAssetsUsingBlock:          assetsEnumerationBlock]; グループ内の ALAssets をとりだすとき、フィルタが使えます。
写真のデータに辿り着こう! 【 ALAsset から ALAssetRepresentation を取得】 NSArray *utis; utis = [asset valueForProperty: ALAssetPropertyRepresentations ]; ALAssetRepresentation *assetRepresentation =      [asset  defaultRepresentation ]; ALAsset が持っている Representation の一覧を取得 お手軽な Representation の取得方法(大抵はこれで OK ) ALAssetRepresentation *assetRepresentation =      [asset  representationForUTI :@"public.jpeg"]; JPEG 画像の Representation を取得
写真のデータに辿り着こう! サムネイル画像は ALAsset の thumbnail メソッドを使います。 ALAssetsGroup クラスの posterImage メソッドと同様、デバイスに適した解像度の画像がえられます得られます。 CGImageRef  thumbnailImageRef = [asset  thumbnail ]; UIImage  *thumbnailImage =      [ UIImage   imageWithCGImage :thumbnailImageRef];
写真のデータに辿り着こう! 【 ALAssetRepresentation からデータを取得】 CGImageRef imageRef = [assetRepr  fullScreenImage ];   UIImage *fullScreenImage =   [UIImage imageWithCGImage:imageRef               scale:[assetRepresentation scale]         orientation:[assetRepresentation orientation]]; 他にも fullResolutionImage があります。
写真のデータに辿り着こう! デモ
2.  イメージピッカーと連携しよう! 何ができる? イメージピッカーで選んだ写真をキーにして ALAsset オブジェクトを取り出せます さっきとは逆方向
イメージピッカーと連携しよう! どんなときに便利? 従来からのアップデートなので UI を変更したくない 別の Representation にアクセスしたい (自前でイメージピッカーを作るのが面倒くさい)
イメージピッカーと連携しよう! //  イメージピッカーで写真を選択したあとのデリゲートメソッド - ( void )imagePickerController:( UIImagePickerController  *)picker didFinishPickingMediaWithInfo:( NSDictionary  *)info {      //  得られた情報から ALAsset の URL を取得      NSURL  *assetURL = [info  objectForKey : UIImagePickerControllerReferenceURL ];      ALAssetsLibrary *library = [[[ALAssetsLibrary  alloc ]  init ]  autorelease ];      // URL に対応するアセットを特定し、そのアセットに対して処理を行う      [library  assetForURL :assetURL               resultBlock :^(ALAsset *asset) {                   //  目的のアセットを特定完了                   //  メタデータにアクセスしたり、                   //  別の Representation を取り出したりできる                   NSLog ( @"asset:%@" , asset);               }              failureBlock :^( NSError  *error) {  NSLog ( @"error:%@" , error); }]; }
(ただし iOS4.1 以降をお使いのお客様に限ります)
3. Exif 情報を操作しよう! 何ができる? 画像データを ALAssetsLibrary で保存できます メタデータ付きで保存できます
Exif 情報を操作しよう! どんなときに便利? カメラロールにイメージデータを保存できます メタデータ付きで保存できます Exif 情報も!
Exif 情報を操作しよう! //  カメラロールにメタデータを付けて書き込み NSDictionary* metadata =  [representation metadata] ; ALAssetsLibrary* l = [[ALAssetsLibrary  alloc ]  init ];   [l  writeImageToSavedPhotosAlbum :[representation fullScreenImage]                         metadata :metadata completionBlock :^( NSURL * url,  NSError * e){                 //  書き込み完了                                                  NSLog ( @&quot;Saved: %@<%@>&quot; , url, e);                   } ]; [metadata  release ]; [l  release ];
(ただし iOS4.1 以降をお使いのお客様に限ります)
よくある質問 フォトライブラリ内のデータを書き換えることはできますか? CGImageRef ではなく生の、生のデータがほしいです ALAssetRepresentation の url は変化することがあるのでしょうか?
Assets Library を使うときの URL を永続的に保持しないようにしましょう アプリをマルチタスキングで動かす場合、通知「 ALAssetsLibraryChangedNotification 」をキチンと受け取りましょう アセットのデータは非同期で受け取るものとしてアプリを設計しましょう

yidev第七回勉強会:「Assets Library手習い」発表資料

  • 1.
  • 2.
    自己紹介 KatokichiSoft  Site : http://cielo.rojo.jp   Twitter :      @hkato193  開発アプリ:    「 Metronome PRO 」
  • 3.
    Assets Library とはiOS4.0 から追加されたフレームワーク AssetsLibrary.framework 「写真 (Photos) 」アプリで管理している画像 / ビデオにアクセスする手段を提供してくれます
  • 4.
    Assets Library を使うとこんなことがカメラロールやフォトライブラリのデータに直接アクセスできる マイイメージピッカー! お仕着せのあのイメージピッカー要らず! 必要なデータを必要なだけ得られます メモリに優しい! メタデータにも簡単アクセスできます アドホックなコード要らず!
  • 5.
    参考資料 残念ながらまだ少ないです WWDC2010Session421 - Incorporating the Camera and Photo Library in your App 9:30 〜 サンプルプロジェクト iOS/MyImagePicker/
  • 6.
  • 7.
    アセットってなに? asset /ǽset/名 詞 1   (…にとって)役にたつもの[こと] , 価値あるもの ⦅ to, for ... ⦆ ;長所 , 美点(⇔ liability ) an asset in negotiation |交渉の際にプラスになるもの count beauty as an asset |美しいことを利点と心得る He is a most valuable asset to the firm. |彼は会社にとって貴重な人材だ . 2   資産の一項目 , ( 1 個の)財産 . 3 ⦅〜 s ⦆ ①  流動資産;資産 , 財産 fixed [ intangible, net ]  assets |固定[無形 ,  純]財産 cultural assets |文化財 seize [ take over ] the assets of ... |…の財産を接収する . ②  (債務弁済に充当される)財産 . ③  (特に負債資本に対し)資産[財産]項目 . ⇒ PROPERTY[ 類語 ] ④  〘法律〙 (死者の債務遺贈に充当されるべき)遺産 . 4   情報提供者 .   プログレッシブ英和・和英中辞典
  • 8.
    アセットってなに? asset /ǽset/名 詞 1   (…にとって)役にたつもの[こと] , 価値あるもの ⦅ to, for ... ⦆ ;長所 , 美点(⇔ liability ) an asset in negotiation |交渉の際にプラスになるもの count beauty as an asset |美しいことを利点と心得る He is a most valuable asset to the firm. |彼は会社にとって貴重な人材だ . 2   資産の一項目 , ( 1 個の)財産 . 3 ⦅〜 s ⦆ ①  流動資産;資産 , 財産 fixed [ intangible, net ]  assets |固定[無形 ,  純]財産 cultural assets |文化財 seize [ take over ] the assets of ... |…の財産を接収する . ②  (債務弁済に充当される)財産 . ③  (特に負債資本に対し)資産[財産]項目 . ⇒ PROPERTY[ 類語 ] ④  〘法律〙 (死者の債務遺贈に充当されるべき)遺産 . 4   情報提供者 .  −−− プログレッシブ英和・和英中辞典から抜粋
  • 9.
    アセットってなに? 同じ意味を持ったデータのまとまりを扱う単位(資産) ファイル形式(JPEG, RAW, etc ) サムネイル画像とビデオデータ ファイル名ではなく URL で特定 アセットを介してデータを取り扱う(情報提供者) データ∈アセット。アセット == データ、ではないです
  • 10.
    登場人物(クラス編) クラスの階層関係。それぞれ何を区別しているかに注目。 クラス役割 ALAssetsLibrary フォトライブラリにアクセスするときの起点 ALAssetsGroup イベント。「最近の 12 ヶ月」「美味しかったマツタケ」「高倉健」など ALAsset アセットそのもの。画像やビデオ ALAssetRepresentation 画像データ
  • 11.
    登場人物(使用技術編) Proxy デザインパターンデータには代理を介してアクセスします Blocks iOS4.0 で使えるようになった構文です。ラムダ / クロージャ UTI ( Uniform Type Identifier ) データ種類の識別子。 &quot;public.jpeg&quot; や &quot;com.apple.quicktime-movie&quot; とか URL データの場所。 &quot;assets-library://asset/asset.jpg?id=3224&ext=jpg&quot; みたく使われます
  • 12.
  • 13.
    1. 写真のデータに辿り着こうイメージピッカーと同じようにトップダウンでデータに辿り着く方法です 2. イメージピッカーと連携しよう イメージピッカーで選んだ写真からアセットを割り出します 3. Exif 情報を操作しよう 画像データをメタデータと共に保存します こんなことを紹介します
  • 14.
    1. 写真のデータに辿り着こう!手順: ALAssetsLibrary から ALAssetsGroup を取得 (グループのポスター画像を取得)   ALAssetsGroup から ALAsset を取得 (フィルターで写真/ビデオを指定) (アセットのサムネイルを取得)   ALAsset から ALAssetRepresentation を取得 (サイズ、ヘッダ情報などのメタデータを取得)   ALAssetRepresentation から CGImageRef ( or ビデオ)を取得
  • 15.
    写真のデータに辿り着こう! 【 ALAssetsLibraryから ALAssetsGroup を取得 (1) 】 ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init]; ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock =      ^(ALAssetsGroup *group, BOOL *stop) {         if (group) {            // グループを配列に格納するなど         else            // グループ数え上げの終了。データ表示など         };     } ALAssetsGroup が 途切れるまで 数え上げ
  • 16.
    写真のデータに辿り着こう! 【 ALAssetsLibraryから ALAssetsGroup を取得 (2) 】 数え上げの実行。グループのタイプを絞り込んでいることに注目 NSUInteger groupTypes = ALAssetsGroupAlbum |                         ALAssetsGroupEvent |                         ALAssetsGroupFaces ; [assetsLibrary enumerateGroupsWithTypes :groupTypes     usingBlock :listGroupBlock     failureBlock :^(NSError *error){NSLog(@&quot;error:%@&quot;,error);}];
  • 17.
    写真のデータに辿り着こう! グループの代表になる画像は posterImageメソッドで取得できます。   iPhone3GS だと 55×55 か 132×132 の画像(ルール不明) iPhone4 は、すみません、未確認です CGImageRef posterImageRef = [group  posterImage ]; UIImage *posterImage =      [ UIImage imageWithCGImage :posterImageRef];
  • 18.
    写真のデータに辿り着こう! 【 ALAssetsGroupから ALAsset を取得】 // グループ名は [assetsGroup valueForProperty:ALAssetsGroupPropertyName]; ALAssetsGroupEnumerationResultsBlock assetsEnumerationBlock =     ^(ALAsset *result, NSUInteger index, BOOL *stop) {         if (result) {             // Asset の取得成功             NSLog(@&quot;asset:%@&quot;, result);         }     }; [assetsGroup enumerateAssetsUsingBlock :assetsEnumerationBlock]; ALAsset が 途切れるまで 数え上げ 最後は nil がやってくることに注意!!
  • 19.
    写真のデータに辿り着こう! 選択肢は 3つ allAssets : デフォルトフィルター無し allPhotos : 写真だけ allVideos : ビデオだけ ALAssetFilter *filter    = [ALAssetsFilter allPhotos]; [ group      setAssetsFilter :filter]; [ group        enumerateAssetsUsingBlock:          assetsEnumerationBlock]; グループ内の ALAssets をとりだすとき、フィルタが使えます。
  • 20.
    写真のデータに辿り着こう! 【 ALAssetから ALAssetRepresentation を取得】 NSArray *utis; utis = [asset valueForProperty: ALAssetPropertyRepresentations ]; ALAssetRepresentation *assetRepresentation =      [asset defaultRepresentation ]; ALAsset が持っている Representation の一覧を取得 お手軽な Representation の取得方法(大抵はこれで OK ) ALAssetRepresentation *assetRepresentation =      [asset representationForUTI :@&quot;public.jpeg&quot;]; JPEG 画像の Representation を取得
  • 21.
    写真のデータに辿り着こう! サムネイル画像は ALAssetの thumbnail メソッドを使います。 ALAssetsGroup クラスの posterImage メソッドと同様、デバイスに適した解像度の画像がえられます得られます。 CGImageRef thumbnailImageRef = [asset thumbnail ]; UIImage *thumbnailImage =      [ UIImage imageWithCGImage :thumbnailImageRef];
  • 22.
    写真のデータに辿り着こう! 【 ALAssetRepresentationからデータを取得】 CGImageRef imageRef = [assetRepr fullScreenImage ];   UIImage *fullScreenImage =   [UIImage imageWithCGImage:imageRef               scale:[assetRepresentation scale]         orientation:[assetRepresentation orientation]]; 他にも fullResolutionImage があります。
  • 23.
  • 24.
    2. イメージピッカーと連携しよう!何ができる? イメージピッカーで選んだ写真をキーにして ALAsset オブジェクトを取り出せます さっきとは逆方向
  • 25.
    イメージピッカーと連携しよう! どんなときに便利? 従来からのアップデートなのでUI を変更したくない 別の Representation にアクセスしたい (自前でイメージピッカーを作るのが面倒くさい)
  • 26.
    イメージピッカーと連携しよう! // イメージピッカーで写真を選択したあとのデリゲートメソッド - ( void )imagePickerController:( UIImagePickerController *)picker didFinishPickingMediaWithInfo:( NSDictionary *)info {     // 得られた情報から ALAsset の URL を取得     NSURL *assetURL = [info objectForKey : UIImagePickerControllerReferenceURL ];     ALAssetsLibrary *library = [[[ALAssetsLibrary alloc ] init ] autorelease ];     // URL に対応するアセットを特定し、そのアセットに対して処理を行う     [library assetForURL :assetURL              resultBlock :^(ALAsset *asset) {                  // 目的のアセットを特定完了                  // メタデータにアクセスしたり、                  // 別の Representation を取り出したりできる                  NSLog ( @&quot;asset:%@&quot; , asset);              }             failureBlock :^( NSError *error) { NSLog ( @&quot;error:%@&quot; , error); }]; }
  • 27.
  • 28.
    3. Exif 情報を操作しよう!何ができる? 画像データを ALAssetsLibrary で保存できます メタデータ付きで保存できます
  • 29.
    Exif 情報を操作しよう! どんなときに便利?カメラロールにイメージデータを保存できます メタデータ付きで保存できます Exif 情報も!
  • 30.
    Exif 情報を操作しよう! // カメラロールにメタデータを付けて書き込み NSDictionary* metadata = [representation metadata] ; ALAssetsLibrary* l = [[ALAssetsLibrary alloc ] init ];   [l writeImageToSavedPhotosAlbum :[representation fullScreenImage]                         metadata :metadata completionBlock :^( NSURL * url, NSError * e){                // 書き込み完了                                                 NSLog ( @&quot;Saved: %@<%@>&quot; , url, e);                  } ]; [metadata release ]; [l release ];
  • 31.
  • 32.
    よくある質問 フォトライブラリ内のデータを書き換えることはできますか? CGImageRefではなく生の、生のデータがほしいです ALAssetRepresentation の url は変化することがあるのでしょうか?
  • 33.
    Assets Library を使うときのURL を永続的に保持しないようにしましょう アプリをマルチタスキングで動かす場合、通知「 ALAssetsLibraryChangedNotification 」をキチンと受け取りましょう アセットのデータは非同期で受け取るものとしてアプリを設計しましょう

Editor's Notes

  • #5 ・データに直接アクセスできるので、イメージピッカーのような手作業を介さなくてすむのもポイントです。たとえば画像処理アプリなどのテストデータを iPhoto で管理しておいて、ユニットテストに使用するみたいなこともできます。 ・必要になるまで画像データ、つまりメモリを消費するデータを引っ張り出さないのです。後述する ALAsset や ALAssetRepresentation といった virtual proxy パターンにおける Proxy オブジェクトが、代わってくれます。 ・画像ヘッダ部分のパースやメンテナンスなど、細かい部分の処理を Assets Library フレームワークが代行してくれますので、
  • #11 1 対多の関係にtt
  • #12 この辺の技術を覚えておけば大丈夫です。 Proxy は幾つかある中の virtual proxy パターン Blocks は匿名関数とかとも言います。 URL は、 http://www.example.com/hoge.h と同じです。 Assets Library
  • #18 シミュレータが iPhone(Retina) で試したときに、アクセスに失敗していて、時間がありませんでした(言い訳)
  • #20 set したあとはずっと効いているので注意
  • #21 なお、これらの UTI は、いずれも MobileCoreServices.framework に含まれているヘッダファイル UTCoreTypes.h で、文字列リテラルとして定義されています。 したがって、文字列 @&amp;quot;public.jpeg&amp;quot; を直接使用するのではなく、 MobileCoreServices.framework を追加した上で、文字列リテラル kUTTypeJPEG を使用するのが良いでしょう。
  • #22 基本はイメージピッカーと同じサイズのデータが得られるのみですので、過剰な期待は禁物です。
  • #24 ・ RootViewController.m   ALAssetsLibrary-&gt;ALAssetsGroup の数え上げ   ( viewDidLoad )数え上げた Group を突っ込んでいる ・ AlbumContentsViewController.m   ALAssetsGroup-&gt;ALAsset の取り出し   ( viewWillAppear: )数え上げた ALAsset オブジェクトを、いったん全て NSMutableArray に突っ込んでいる    proxy パターンだからこそできる配列へのぜんつっ   ALAssetsFilter   写真だけを対象にして数え上げ AlbumContentsTableViewCell.m ・ PhotoDisplayViewController.m   ALAsset-&gt;ALAssetRepresentation の取り出し  画像データの取得 TapDetectingImageView.m ThumbnailImageView.m
  • #31 NSData を保存したい場合は writeImageDataToSavedPhotosAlbum:metadata:completionBlock: メソッドをを
  • #33 ・書き換えは出来ません。既存データを読むことはできるものの、保存は新しいファイルに対してのみ行えるので、コピーをカメラロールに保存するしかありません ・ ALAsstRepresentation クラスの RepregetBytes:fromOffset:length:error: を使用すれば生データを取得できます。 ・あります。具体的には、 - サスペンドしているときにカメラで撮影したりすると、新しいデータが登録されます。このときに URL が変化する可能性があrあr