LX100, Android and Raw Editing

たまには取った写真の Raw 編集をしてみたいが手元には Lightroom の動く Windows も Mac もない。それならと Android の Lightroom を試してみる。

Lightroom for Android は USB で繋いだカメラから画像を直接インポートできると主張している。具体的には USB PTP に対応している。自分のカメラ (LX100) も PTP を話すので繋いでみると・・・。なぜか RAW のファイルが見えない。JPEG は見えるのに・・・。

LX100 は (他のカメラと同じく) USB Storage としても動く。Storage 越しなら Raw が見える。では・・・と試してみるが、今度は Lightroom がよろしくない。USB Storage の接続を検知することもないし、ファイルを Intent にしても反応しない。

という感じで LX100 のいまいちさと Lightroom のイマイチさの組み合わせによりカメラの RAW ファイルを速やかに Lighrtoom に取り込む方法がない。むー・・・。

ためしに Files アプリで Raw のファイルを Downloads などのディレクトリにコピーすると、ようやく Lighrtroom からインポートできるようになる。たぶん Files アプリが RAW のファイルを MediaStore の content provider に登録してくれて、Lightroom はそれを見ているのだろうなあ。


このいまいちさをどう乗り切るか。自分専用の適当なアプリを書けばなんとかなるだろうか。

基本的には RAW ファイルをなんとかして content provider に登録するのが良いのだろうけれど、MediaStore は色々なメタデータ、特に thumbnail を登録するのが大変そう。RAW (CR2) のデコードなんてどうやればいいのかわからない。Files アプリ (DocumentsUI)は何らかの形で Docs (たぶん) の力を借りて CR2 の thumbnail を出している。なにかプロトコルがあるのだろうか...

どこか適当な場所 (Download とか) にファイルをコピーしておいて、誰かがそれを content provider に登録してくれると期待するのはどうか。もし動くなら楽っちゃらくだけど、Lightroom にインポートしたあとファイル消すとかが面倒だなあ。


といったところで挫折。

Lightroom がバージョンアップして USB ストレージから読むなり Intent を解釈できるなりしてくれればいいけれど、Gallery を camera roll とか読んでる Android 版のマニュアルを見る限り Android を理解しているひとが product design をしてくれる期待は薄い。

あとは PTP で RAW をみせてくれるちゃんとしたカメラを買う、というのも解決としては解決なのだけれど、そもそも高いカメラを買う前に自分が RAW いじりをする気になるか手持ちの道具だけで試そうと始めたことなので、金の力で解決はしたくないのだった。


その後 DocumentsUI のコードを睨んだところ、DocumentsContracts というクラスを使うと content provider の URI から thumbnail を作れるらしい。インストールされているアプリは DocumentProvider インターフェイスを介してそうした情報を提供する。Storage Access Framework というやつか。そんなのあったねそういえば・・・。

ただこれだと使える URL はこの SAF 越しに取得したものだけになる。USB Storage はこの SAF 越しに見える。ただしユーザが picker でファイルを選択してあげないといけない。SAF を使ってこの問題を解決するなら、SAF 越しに Raw ファイルを選択され、選択されたファイルを直接、あるいはどこかにコピーして、それを MediaStore に登録し、Lightroom には "Auto Add" 機能でそれを import させる。とかかなー。そんでおわったらコピーを削除。でよさそう。

それにしても冷静に考えると SAF 越しに USB Storage へのアクセスを提供するのは OS のはずで、そうすると CR2 のサムネイルを誰がどのように提供しているのか。まったく謎。