読者です 読者をやめる 読者になる 読者になる

LOVE PENTAXYZ

News & Tips about PENTAX products, and daily photos by PENTAX cameras.

Lightroomでレンズ名を任意に編集する方法




pentax memoさんにて


が公開されましたのでご紹介。
Lightroomのプラグインを作成するための、Luaスクリプトの仕様が想像を絶するだるさだったので、チュートリアル読んで伸びてたら先に解決されてましたorz。閑話休題。

上記記事では、SQLiteは操作せず、オリジナルファイルのExif に直接レンズ名を埋め込む方法がまとめられています。すごくスマート。
詳しくは、上記記事を参照頂ければと思うのですが、理解した感じでは、だいたいこんな感じ。

  • LensTagger Lightroom plugin をインストール
    • ExifTool も合わせてインストール
  • Lightroom(LR)で、レンズ名を書き換えたいファイルを選択
    • 一旦「メタデータをファイルに保存」を実行
    • LensTaggerで、レンズ名を書き換え
    • 「メタデータをファイルから読み込み」を実行

てきとーな話

  • インポート直後(LR上で編集していない状態)であれば、2.の1.「メタデータをファイルに保存」は省略しても構わないような気もする。のですが、未検証です。
    • 6/25追記・確認
      • 編集していなければ、メタデータの保存は省略して大丈夫。
  • 記事中に『PEFの場合は、「Write to xmp sidecar instead??」のチェックを外す』って記載があるのですが、PEFなら『ONにしてもいい』の間違いじゃないのかなぁと思うのですがどうなんだろう。
    • (ONにしても意味ないのは、XMPサイドカーファイルが存在しないDNG, JPEGの場合なのでは…)
    • この機能、「オリジナルファイルを非破壊で編集したい場合は、XMP sidecarを書き換るぜ、ひゃっほぅ!」みたいな目的のものだと思うんだけど、
    • 6/25追記・確認
      • ONだと、PEFのExifデータは書き換えず、XMP sidecarのみ書き換えられる。
        • 書き換え後「メタデータをファイルを読み込み」は必要
      • OFFだとPEFのExifデータが書き換えられる。
    • これ使った後、「メタデータをファイルから読み込み」を実行してしまうと、Exifのデータが優先される気がするので意味なくなる気がする。
    • 要するに、この機能ONにする場合は、「メタデータをファイルから読み込み」はしてはいけない気がする。
    • XMPの書き換えが上手くいけば、手動での読み込みなしに勝手に反映されるのでは?

メモ程度の雑談

レンズ名の編集方法について(4種類)

把握した限りでは、LR上で表示されるレンズ名の書き換え方法は以下の4つ。

  • RAW, JPEGファイルのExif を書き換える
    • 一番スマート。
  • XMPサイドカーファイルを書き換える
    • オリジナルファイルを破壊しない点では〇
    • ただし、LRで編集するとXMPが自動的に書き換えられる場合があるので、そのときは再度編集の必要あり
  • CameraRaw.dll 内のLensID, LensModel対応表を書き換える
    • Ver.up時にCameraRaw.dll が書き換わると、再度編集の必要あり
    • ID と レンズ名が合わない場合は、SQLite DBのAgInternedExifLens テーブルをいじる方が楽だと思う。
  • SQLiteのDBを書き換える
    • LRの内部構造を把握したい人向け
    • たぶん直接操作するメリットは一般人にはない。

ところで、RAWとかXMPを書き換える場合、仮想コピーについてはどうなるんだろう…。


LRのコマンドなどについて

  • XMPファイル
    • ExifなどのメタデータをまとめたAdobeの独自形式ファイル
      • 現像の編集過程(パラメータ調整)も記録される
    • 実体はXMLファイル
      • 仕様書やツールキットが公開されてるので直接編集できなくはない気がする
    • LRでは、オプションで、適宜自動生成される。デフォルトでは自動生成しない。(生成のタイミングは要確認)
  • 「メタデータをファイルに保存」
    • XMPファイルを生成する。
      • DNG, JPEGの場合は、シリアライズされてオリジナルファイルに埋め込まれる。
      • 各社独自形式のRAWファイルの場合は、XMPファイルとして外部ファイルに保存される
    • このコマンドを実行すると、LRの編集過程(パラメータ調整)も合わせて保存される。っぽい。
  • 「メタデータをファイルから読み込み」
    • オリジナルのファイル(RAW, JPEG)から、XMPファイルを再生成していると思われる
    • さらにXMPファイルも読み込んでる様子
      • バッティングする場合は、オリジナルファイルのExif情報を優先して読み込む雰囲気?


LRのプラグイン作成について

Luaスクリプトの機能限定版で作成する。非プログラマ向けに理解しやすいように抽象的な機能をこごとく削った感じで、正直かったるい仕様になってる(ように感じた)ので使いたくない。

詳しくは、Lightroom SDK 3.0プログラマーズガイド の巻末のチュートリアルを。手軽にLRを操作できるのは分かるんだけど、UIをフルスクラッチで作るところとかまどろっこしすぎてしねる。

そんなわけで、登場するのがこちら。Run Any Command Plugin。
これで、選択したファイルに関する情報を、外部ファイルに投げられます。
自分で使う分には使うレンズ名限られてるし、ExifToolのGUIフロントエンド作って、このプラグインでそこに投げるのが良いかもしれないと思ったりする。(はやくやれ)



LRの仕様について(要確認)


  • インポート時のレンズ名の決定フロー
    • Exif にLens名が含まれている場合:
      • → それを使う
    • Exif にLens名が含まれていない場合:
      • Exifに LensIDが含まれている場合:
        • → CameraRaw.dll の対応表を参照してレンズ名決定
        • → AgInternedExifLens にレンズIDとレンズ名を記録
      • Exifに LensIDが含まれていない場合:
        • → 「不明」にする
  • インポート後のレンズ名の表示フロー
    • AgInternedMetaDataにレンズ名がある場合:
      • → それを使う
    • AgInternedMetaDataにレンズ名がない場合:
      • レンズIDがある場合:
        • → AgInternedExifLensを参照してレンズ名決定
      • レンズIDがない場合:
        • → 「不明」にする