問題タブ [alassetslibrary]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - AssetsLibraryフレームワークiPhoneを使用してライブラリ内のビデオにアクセスしますか?
次のコードを使用してAssetsLibraryFrameworkを使用してiPhoneライブラリのビデオにアクセスしようとしています...しかし、アプリケーションを実行すると、コードが機能しません...配列アセットはまだ空ですか?私は何が間違っているのですか?
ちなみに、私のiPhoneはiPhone 4.1にアップグレードされた3Gです(ただし、アセットフレームワークはエラーを出していません)
iphone - ALAsset からビデオを取得する
iOS 4 で利用可能な新しいアセット ライブラリ フレームワークを使用すると、UIImagePickerControllerReferenceURL を使用して特定のビデオの URL を取得できることがわかります。返される URL は次の形式です。
このビデオをウェブサイトにアップロードしようとしているので、概念の簡単な証明として、次のことを試しています
この場合、データは初期化されません。新しいアセット ライブラリを介して URL に直接アクセスできた人はいますか? ご協力いただきありがとうございます。
objective-c - ALAssetsLibrary assetForURL:resultBlock:failureBlock を使用した EXC_BAD_ACCESS エラー:
ユーザーが選択した画像から EXIF データを読み込もうとしています。これには ALAssetLibrary を使用しています。これまでのところ、assetForURL:resultBlock:failureBlock:
メソッドに必要な参照 URL を取得できましたが、参照 URL を使用して何かを実行しようとすると、EXC_BAD_ACCESS
エラーが発生します。
URL を使用するNSLog
直前に、(私の知る限り正しい) 文字列が得られます。
assets-library://asset/asset.JPG?id=1000000003&ext=JPG
私はこれを理解しようとしてきましたが、毎回行き止まりにぶつかっているようです。私は一般的に Objective-C に慣れていないことを認めなければならないので、それに応じて私のコードを自由に批判してください。
コード (完全なクラスにはほど遠いですが、それで十分だと思います):
iphone - ALAssetsLibrary enumerateGroupsWithTypes: - スレッド同期
[ALAssetsLibrary enumerateGroupsWithTypes:] を使用して、ALAssets を配列に格納しています。これは非同期操作であるため、作業を続行する前に完了するのを待つ必要があります。
[ALAssetsLibrary enumerateGroupsWithTypes:] を使用する場合の Cocoa スレッド同期を読み、推奨される NSConditionLock を試しました。ただし、ブロックは常にメイン スレッドで実行されるため、条件ロックを使用して待機すると、メイン スレッドがブロックされ、ブロックが実行されません -> スタックします。メソッド loadAssets を新しいスレッドで実行しようとしましたが、それでもブロックはメイン スレッドで実行されます。
列挙が完了するのを実際に待つ方法が見つかりません。ブロックをメインスレッドとは別のスレッドに強制する方法や、他にできることはありますか?
コードは次のとおりです。
iphone - ALAssetsLibrary を使用して単一の画像にアクセスする
ALAssetsLibrary を使用するのは初めてです。ユーザーが保存したフォト ギャラリーの最新の写真にアクセスする必要があります。これを行うには、ALAssetsLibrary インスタンスを作成し、最後の画像を選択する前に、ユーザーのギャラリー内のすべてのアイテムを反復処理する必要があるようです。これは常に最悪のシナリオです。この問題に取り組むためのより速い/より良い方法はありますか?
objective-c - enumerateGroupsWithTypes は、メイン スレッドでのポーリング時にブロックを実行しません。
iOS 4.x では、デバイス上のすべての写真を列挙しようとしています。それが完了したら、同じ方法でそのリストをさらに処理します。
enumerateGroupsWithTypes のブロックは別のスレッドで非同期に実行され、メイン スレッドの実行が継続されないようにする方法がわからないため、準備が整うまでさらなる処理を開始しないようにするための解決策は、収集している写真の配列を監視することです。最後に NSNull オブジェクトを含めることで、入力が完了したことを示します。
iOS 4.0 では問題なく動作します。他のスレッドが写真を列挙する間、ポーリングは続行され、それが完了するとメイン スレッドで実行が続行されます。iOS 4.1+ では、ポーリングは、他のスレッドがそのブロックを実行するのを何らかの方法で停止するため、ポーリングが無限ループに陥ります。
列挙ブロックが呼び出すことができる別のメソッドにさらなる処理を分割することにより、列挙の非同期の性質を受け入れる以外に、これを達成するためのより良い方法はありますか?
おまけ: ポーリング アプローチが 4.0 では機能するのに 4.1 以降では機能しないのはなぜですか?
iphone - ALAssetsLibraryのenumerateGroupsWithTypes:usingBlock:failureBlock:iOS 4.3.4では「壊れています」ですか?
ALAssetsLibrary api(4.0以降で利用可能)に基づくiOSアプリを開発しています。これを使用して、デバイスに保存されているすべての画像とビデオを取得します。これは非常に簡単です。とにかく、iPhone4にiOS4.3.4をインストールするとすぐに、コードが機能しなくなりました。フェッチを呼び出す行は何もしません!コードは次のとおりです(iOS 4.3.3では正常に動作します)。
enumerateGroupsWithTypes:usingBlock:failureBlock:呼び出されないようです。これは、ブロックが実行されていないためです...エラーは発生しません。なんで?私に何ができる?
ps:「types」引数を変更しようとしましたが、それは問題ではありません!
uiimagepickercontroller - iOS5でのUIImagePickerとALAAssetRepresentationの問題
UIImagePicker for Camera Rollによって返されるNSDictionaryは、UIImagePickerControllerOriginalImageオブジェクトを返さなくなったようです。代わりに、UIImageControllerReferenceURLを取得し、ALAAssetLibraryのassetForURLを使用して、長くて複雑なプロセスを通じてUIImageを作成する必要があります。
Webにはこれの例が十分にあり、すべて非常によく似ていますが、ALARepresentationオブジェクトを作成した後、そのメソッドのいずれかを呼び出すとEXC_BAD_ACCESS例外が発生するため、画像を取得できません。「参照URL」ではなく「元の画像」を取り戻す方法を知っている人はいますか、それともこの動作は黙って非推奨になっていますか?
注:ストーリーボード機能として、 iOS 5(メモリ管理が好きなため)とXcode4.2で作業しています。以前のバージョンに戻すことは不可能のようです。コードは次のようになります。
EXC_BAD_ACCESSは、CGImageRefを作成しようとしている行で発生します。他の*repメソッド(メタデータを含む)を試しました。これらも例外をスローします。「機能する」唯一のことは、アセットからサムネイルCGImageRefを取得することですが、フル解像度の画像が必要です。
最後に、それが機能したとしても、非同期の性質(コールバックブロックを使用)は、私の場合、ピッカープロセスを複雑にするため、実際には私が望んでいるものではありません。カメラロールから画像を選択する他の方法はありますか?
iphone - writeImageToSavedPhotosAlbum:metadata:completionBlock:
メソッド writeImageToSavedPhotosAlbum:metadata:completionBlock: 撮影した写真をフォト アルバムに保存します。コードは次のとおりです。
ユーザーの現在地を取得するメソッド getLocation !これで成功を保存できます!次に、UIImagePickerController を使用して、フォト アルバムから撮影した写真を選びたいと思います! コードは次のとおりです。
次に、メタデータが null であることをログに記録します。保存したメタデータ情報を取得するにはどうすればよいですか?ありがとう!
objective-c - ALAsset URLから作成された場合、AVAssetにはトラックまたは期間がありません
ALAssetsLibraryからすべてのビデオアセットを取得しています(基本的に、ネイティブカメラアプリから記録されているすべてのもの)。次に、各ビデオに対してこれを行う各ビデオアセットで列挙を実行しています。
NSLogは、ALAssetから取得したAVAssetのトラック数が0で、継続時間が0.0秒であることを報告しています。URLを確認したところ、「assets-library://asset/asset.MOV?id = 9F482CF8-B4F6-40C2-A687-0D05F5F25529&ext=MOV」で正しいようです。alAsset.thumbnailを表示し、ビデオの正しいサムネイルが表示されているので、alAssetは実際にはビデオであり、正しいビデオであることがわかります。
これらすべてにより、avAssetの初期化に問題があると私は信じますが、私の人生では、何が問題になっているのか理解できません。誰か助けてもらえますか?
アップデート:
ALAssetRepresentationから提供されたURLに誤りがあることを確認したと思います。これは、正しいサムネイルが表示されるため、奇妙なことです。私はこのコードを次の場所に追加しました:
それは私にこれを与えます:
何が原因なのかはまだわかりません。私が気付いているのはURLだけです。これは、「assets-library://asset/asset.MOV?id = 9F482CF8-B4F6-40C2-A687-0D05F5F25529&ext = MOV」で、私が見たものとは異なります。これを探し回っています。他の場所で見たものは、「assets-library://asset/asset.MOV?id = 1000000394&ext = MOV」のように見え、英数字の代わりに数字がダッシュで区切られた名前になっています。
それが役に立ったら、私はXCode4.2BetaとiOS5を使用しています。何か考えられたら教えてください。ありがとう。