Mirage Camera の写真を Side-By-Side で抽出する

Last updated 5 months ago

作りました

Mirage Camera の写真フォーマット

Mirage Camera で撮った写真(*.vr.jpg)が、どう見ても一眼の180°写真にしか見えず困ったのですが、メタデータとして右目用の写真データを含むという驚きのデータフォーマットでした。

フォーマットはこちらの Cardboard Camera VR Photo Format と同じようです。

これは、JPEG に含まれた XMP のメタデータの中に右目用の JPEG 画像がそのまままるっと BASE64 で入っているというフォーマットです。 注意としては BASE64 といいつつパディングがない状態で来るので、自分でパディングを追加してあげないといけません。

メタデータの抽出には以下のライブラリを使用しました。

BASE64 のパディングの追加

BASE64 は仕様的に文字数が4の倍数である必要があり、足りない場合は=で埋める必要があります。Mirage Camera の BASE64 はこのパディングがないため、以下のコードで追加しました。

static string PadBase64String(string base64)
{
var remainder = (base64.Length % 4);
if (remainder == 0) return base64;
var paddingLength = 4 - remainder;
return base64 + new string('=', paddingLength);
}

その他の変換方法

以下の Reddit の記事がよくまとまっていたので貼っておきます。