【今更だけどandroid.hardware.Cameraを使う】Camera.Parametersの設定値 サムネイルのJPEG品質

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

android.hardware.Cameraを使うことで、Android端末にあるカメラデバイスにアクセスして使うことができます。
android.hardware.Cameraは、現在では非推奨となっていますがOpenCV等ではまだまだ使われています。

Android端末に実装されているカメラデバイスは固有の性能があります。
そのため、ある端末では出来るのに別の端末では出来ないということが多々あります。
今回はCamera.ParametersのサムネイルのJPEG品質に関連する設定値を説明します。
下記の実装はすべて前回までに作ったクラスを修正しています。

サムネイルのJPEG品質

カメラデバイスにキャプチャした写真データをJPEGファイルに含まれるサムネイルの品質を設定することができます。
サムネイルのJPEG品質は1〜100の間で設定ができ、100で最高の品質になります。
Camera.Parameters内にあるサムネイルのJPEG品質に関連するデータのキーは下記のとおりです。
jpeg-thumbnail-qualityカメラデバイスに現在設定されているサムネイルのJPEG品質のキーです。

サムネイルのJPEG品質の取得と変更

サムネイルのJPEG品質はint getJpegThumbnailQuality()で現在の値が取得できます。
また、void setJpegThumbnailQuality(int quality)を使ってサムネイルのJPEG品質を変更することができます。


    private void updateCameraParameters() {
        Camera.Parameters parameters = mCamera.getParameters();
        Log.d(TAG, "JpegThumbnailQuality: " + parameters.getJpegThumbnailQuality());
        parameters.setJpegThumbnailQuality(10);
        mCamera.setParameters(parameters);
    }


サムネイルのJPEG品質の注意点

サムネイルのJPEG品質の設定値は下記の条件で例外が発生するので注意が必要です。
  1. 1〜100以外の値を設定した状態でCamera#setParametersを使用すると例外が発生します。
  2. Camera.Parameters#removeで”jpeg-thumbnail-quality”を削除した状態でCamera#setParametersを使用すると例外が発生します。
  3. カメラプレビューが開始された状態で写真のJPEG品質を変更すると即時に反映されます。