Cameraのプレビューサイズとピクチャーサイズの機種依存問題

こんにちは、KID.Aです。

 

以前、Cameraのプレビューサイズとピクチャーサイズの比率の検証でプレビューサイズとピクチャーサイズの比率が同じでも撮影中と撮影後の写真が異なってしまう機種があることや、比率によって撮影前と撮影後で縦・横の両方が写らないパターンがあるということを記載しました。

これらの機種依存や現象について記載していきたいと思います。

 

  • プレビューサイズとピクチャーサイズの比率が同じでも撮影中と撮影後の写真が異なってしまう現象について

 

P-02D(4.0.4)で試した際に比率が同じだけど、なぜかプレビューサイズがきれてしまうという現象がありました。
 

下記の図のように4:3同士なのにプレビューサイズが720 x 540の場合は、プレビューサイズの画像の一番下がピクチャーサイズに比べて少し切れているのがわかります。
※写真をとったときにぶれてしまったのでピクチャーサイズが多少ぼやけています。

プレビューサイズ 4:3 (720 x 540) ピクチャーサイズ 4:3 (4160 x 3120)
c_k_1_1 c_k_1_2

わかりやすいように赤い線をいれたバージョンも用意しました。
s_red_line

 
4:3同士でもプレビューサイズが640×480の場合はうまくいきます。

プレビューサイズ 4:3 (640 x 480) ピクチャーサイズ 4:3 (4160 x 3120)
c_k_2_1 c_k_2_2

 

P-02Dはプレビューサイズが720×540のサイズだけピクチャーサイズと比率が同じでも表示上、おかしくなってしまうということがわかりました。

そのため、720×540のサイズを外すという機種依存対応が必要です。(それ以外思いつかなかったです)

 

対策は以下のようなメソッドを作ります。

public static boolean isAllowedPreviewSize(int previewWidth, int previewHeight) {
    if ("P-02D".equals(Build.MODEL)) {
        if (previewWidth == 720 && previewHeight == 540) {
            return false;
        }
    }
    return true;
}

Cameraのプレビューサイズとピクチャーサイズの比率の検証で記載したプレビューサイズとピクチャーサイズの同一比率を抜き出す処理に先程のメソッドを加えます。

List previewSizes = params.getSupportedPreviewSizes();
List pictureSizes = params.getSupportedPictureSizes();
 
// プレビューサイズとピクチャーサイズが同一比率の解像度を選択する
for (Size picSiz: pictureSizes) {
    for (Size preSiz: previewSizes) {
        if (picSiz.width * preSiz.height == preSiz.width * picSiz.height) {
            if (isAllowedPreviewSize(preSiz.width, preSiz.height) {
                // ここでpreSizとpicSizが同一の比率と判定できます
            }
        }
    }
}

あまり機種依存対応はしたくはないのですが、カメラなどのハードウェア機能の周りはやはり多いものです。

 

  • 比率によって、縦、横、両方が写らないパターン

 

L-06D(4.0.4)で確認していた際に、ピクチャーサイズの写真の縦・横の一部がプレビューサイズで写らないことがわかりました。
プレビューサイズとピクチャーサイズの比率は以下のパターンで発生します。

プレビューサイズ 30:17 (1920 x 1088) ピクチャーサイズ 4:3 (3264 x 2448)
c_k_3_1 c_k_3_2

プレビューサイズはルービックキューブの上の机が写らないのにピクチャーサイズは写っています。また、プレビューサイズとピクチャーサイズの左のルービックキューブをみると横の写り具合も異なるのがわかります。

 

このような縦・横が切れてしまうパターンがあるため、やはりプレビューサイズとピクチャーサイズは同じ比率に合わせた方がよいと思われます。

 

以上、Camera APIのプレビューサイズとピクチャーサイズの機種依存でした。

 

KID.A

KID.A の紹介

楽して生きることと一発逆転を夢見ている、ちゃきちゃきのAndroiderです。
いろいろアプリを出しているのですが、いつもリリース後にターゲットユーザ数を2桁見誤っていたことに気付くので、残念でなりません。下方修正で、ヒットがでません。おしいです。

明日から本気出します。
よろしくお願いします。

カテゴリー: Android タグ: , , , , , , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です