SlideShare una empresa de Scribd logo
1 de 33
Assets Library 手習い KatokichiSoft
自己紹介 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Assets Library とは ,[object Object],[object Object],[object Object]
Assets Library を使うとこんなことが ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
参考資料 ,[object Object],[object Object],[object Object],[object Object]
「アセット」ってなに?
アセットってなに? ,[object Object],  プログレッシブ英和・和英中辞典
アセットってなに? ,[object Object], −−− プログレッシブ英和・和英中辞典から抜粋
アセットってなに? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
登場人物(クラス編) ,[object Object],クラス 役割 ALAssetsLibrary フォトライブラリにアクセスするときの起点 ALAssetsGroup イベント。「最近の 12 ヶ月」「美味しかったマツタケ」「高倉健」など ALAsset アセットそのもの。画像やビデオ ALAssetRepresentation 画像データ
登場人物(使用技術編) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3つの利用方法
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],こんなことを紹介します
1.  写真のデータに辿り着こう! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
写真のデータに辿り着こう! ,[object Object],ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init]; ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock =       ^(ALAssetsGroup *group, BOOL *stop) {          if (group) {            //  グループを配列に格納するなど          else             //  グループ数え上げの終了。データ表示など          };     } ALAssetsGroup が 途切れるまで 数え上げ
写真のデータに辿り着こう! ,[object Object],数え上げの実行。グループのタイプを絞り込んでいることに注目 NSUInteger groupTypes =  ALAssetsGroupAlbum |                          ALAssetsGroupEvent |                          ALAssetsGroupFaces ; [assetsLibrary  enumerateGroupsWithTypes :groupTypes      usingBlock :listGroupBlock      failureBlock :^(NSError *error){NSLog(@"error:%@",error);}];
写真のデータに辿り着こう! ,[object Object],[object Object],[object Object],[object Object],CGImageRef  posterImageRef = [group  posterImage ]; UIImage  *posterImage =      [ UIImage   imageWithCGImage :posterImageRef];
写真のデータに辿り着こう! ,[object Object],//  グループ名は [assetsGroup valueForProperty:ALAssetsGroupPropertyName]; ALAssetsGroupEnumerationResultsBlock assetsEnumerationBlock =      ^(ALAsset *result, NSUInteger index, BOOL *stop) {         if (result) {              // Asset の取得成功              NSLog(@"asset:%@", result);         }     }; [assetsGroup  enumerateAssetsUsingBlock :assetsEnumerationBlock]; ALAsset が 途切れるまで 数え上げ 最後は nil がやってくることに注意!!
写真のデータに辿り着こう! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],グループ内の ALAssets をとりだすとき、フィルタが使えます。
写真のデータに辿り着こう! ,[object Object],NSArray *utis; utis = [asset valueForProperty: ALAssetPropertyRepresentations ]; ALAssetRepresentation *assetRepresentation =      [asset  defaultRepresentation ]; ALAsset が持っている Representation の一覧を取得 お手軽な Representation の取得方法(大抵はこれで OK ) ALAssetRepresentation *assetRepresentation =      [asset  representationForUTI :@"public.jpeg"]; JPEG 画像の Representation を取得
写真のデータに辿り着こう! ,[object Object],CGImageRef  thumbnailImageRef = [asset  thumbnail ]; UIImage  *thumbnailImage =      [ UIImage   imageWithCGImage :thumbnailImageRef];
写真のデータに辿り着こう! ,[object Object],CGImageRef imageRef = [assetRepr  fullScreenImage ];   UIImage *fullScreenImage =   [UIImage imageWithCGImage:imageRef               scale:[assetRepresentation scale]         orientation:[assetRepresentation orientation]]; 他にも fullResolutionImage があります。
写真のデータに辿り着こう! ,[object Object]
2.  イメージピッカーと連携しよう! ,[object Object],[object Object],[object Object]
イメージピッカーと連携しよう! ,[object Object],[object Object],[object Object],[object Object]
イメージピッカーと連携しよう! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
(ただし iOS4.1 以降をお使いのお客様に限ります)
3. Exif 情報を操作しよう! ,[object Object],[object Object],[object Object]
Exif 情報を操作しよう! ,[object Object],[object Object],[object Object],[object Object]
Exif 情報を操作しよう! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
(ただし iOS4.1 以降をお使いのお客様に限ります)
よくある質問 ,[object Object],[object Object],[object Object]
Assets Library を使うときの ,[object Object],[object Object],[object Object]

Más contenido relacionado

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

【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話Hibino Hisashi
 
コンピュータビジョン7章資料_20140830読書会
コンピュータビジョン7章資料_20140830読書会コンピュータビジョン7章資料_20140830読書会
コンピュータビジョン7章資料_20140830読書会Nao Oec
 
実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しよう実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しようHiroki Omae
 
Elastic stack 世界にさらしたサーバを可視化してみた
Elastic stack 世界にさらしたサーバを可視化してみたElastic stack 世界にさらしたサーバを可視化してみた
Elastic stack 世界にさらしたサーバを可視化してみたMasamitsu Maehara
 
Integrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net coreIntegrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net coreShotaro Suzuki
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
Tour of distributed systems 1 - ZooKeeper
Tour of distributed systems 1 - ZooKeeperTour of distributed systems 1 - ZooKeeper
Tour of distributed systems 1 - ZooKeeperChris Birchall
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発Nomura Yusuke
 
File API: Writer & Directories and System
File API: Writer & Directories and SystemFile API: Writer & Directories and System
File API: Writer & Directories and SystemTaku AMANO
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosTomohiro Kumagai
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
What's New in the Elastic 8.4 Release
What's New in the Elastic 8.4 ReleaseWhat's New in the Elastic 8.4 Release
What's New in the Elastic 8.4 ReleaseShotaro Suzuki
 
NIO.2を使って簡単ファイル操作
NIO.2を使って簡単ファイル操作NIO.2を使って簡単ファイル操作
NIO.2を使って簡単ファイル操作Yuichi Sakuraba
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudyTakahiro Iwase
 
【CLOUDIAN】コード化されたインフラの実装
【CLOUDIAN】コード化されたインフラの実装【CLOUDIAN】コード化されたインフラの実装
【CLOUDIAN】コード化されたインフラの実装CLOUDIAN KK
 
re:Growth 2016 in TOKYO発表「AWS Glueの紹介」
re:Growth 2016 in TOKYO発表「AWS Glueの紹介」re:Growth 2016 in TOKYO発表「AWS Glueの紹介」
re:Growth 2016 in TOKYO発表「AWS Glueの紹介」Yosuke Katsuki
 

Similar a yidev第七回勉強会:「Assets Library手習い」発表資料 (20)

【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
 
コンピュータビジョン7章資料_20140830読書会
コンピュータビジョン7章資料_20140830読書会コンピュータビジョン7章資料_20140830読書会
コンピュータビジョン7章資料_20140830読書会
 
実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しよう実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しよう
 
Vector
VectorVector
Vector
 
Elastic stack 世界にさらしたサーバを可視化してみた
Elastic stack 世界にさらしたサーバを可視化してみたElastic stack 世界にさらしたサーバを可視化してみた
Elastic stack 世界にさらしたサーバを可視化してみた
 
Integrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net coreIntegrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net core
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Tour of distributed systems 1 - ZooKeeper
Tour of distributed systems 1 - ZooKeeperTour of distributed systems 1 - ZooKeeper
Tour of distributed systems 1 - ZooKeeper
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
File API: Writer & Directories and System
File API: Writer & Directories and SystemFile API: Writer & Directories and System
File API: Writer & Directories and System
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhios
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
What's New in the Elastic 8.4 Release
What's New in the Elastic 8.4 ReleaseWhat's New in the Elastic 8.4 Release
What's New in the Elastic 8.4 Release
 
osc_tokyo20100226
osc_tokyo20100226osc_tokyo20100226
osc_tokyo20100226
 
NIO.2を使って簡単ファイル操作
NIO.2を使って簡単ファイル操作NIO.2を使って簡単ファイル操作
NIO.2を使って簡単ファイル操作
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
 
Ext.direct
Ext.directExt.direct
Ext.direct
 
【CLOUDIAN】コード化されたインフラの実装
【CLOUDIAN】コード化されたインフラの実装【CLOUDIAN】コード化されたインフラの実装
【CLOUDIAN】コード化されたインフラの実装
 
ActiveStorage::Analyzer
ActiveStorage::AnalyzerActiveStorage::Analyzer
ActiveStorage::Analyzer
 
re:Growth 2016 in TOKYO発表「AWS Glueの紹介」
re:Growth 2016 in TOKYO発表「AWS Glueの紹介」re:Growth 2016 in TOKYO発表「AWS Glueの紹介」
re:Growth 2016 in TOKYO発表「AWS Glueの紹介」
 

Último

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

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

Notas del editor

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