PHImageManagerのを使ってPhotosアプリから写真や動画のポスターフレームを取得する時自分が気づいたところをまとめます。
- requestImageForAsset:
- 動画を指定したら動画のポスターフレーム(大体先頭フレーム)を返すことができますが。注意しなければいけないのは取得した画像が普通の画像の色チャネルの順番と違って、取得したUIImageをそのままopenGLのシェーダで処理すると色がおかしくなります。自分の場合はRチャネルとBチャネルが逆なっていました。
- iOSシミュレータでこのメソッドから画像を取得する場合、取得した画像のチャネルも同じように逆になっています。でも本体で同じコードを実行すると正しくなります。原因が不明で、シミュレータのバグかシミュレータのRGBと本体のRGBのフォーマットが違うかと推測します。
requestImageDataForAsset:を使ってNSDataを取得し、UIImageに変換すればうまく画像の色問題を解消できそう。但し、requestImageDataForAsset:は動画のポスターフレームを取得できないため、ポスターフレームの取得はAVFoundationを利用するしかないみたいです。