LoginSignup
0
1

More than 3 years have passed since last update.

Android の Camera2 API を使って Color Effect する

Posted at

Android の Camera2 API を使って カメラのプレビュー画面を表示する
の続きです。

Color Effect

Color Effect (色効果) は、
カメラデバイスからの画像の色合いを変更する機能です。
この機能は機種依存です。
この機能の解釈と実装は、Androidデバイスのメーカーに委ねられている。
すべての機種で同じ動作をするとは限らない。

Camera2 API には下記の Color Effect が用意されている。
この機能がサポートされていないときは、OFF のみをリストする。

  • OFF
  • MONO
  • NEGATIVE
  • SOLARIZE
  • SEPIA
  • POSTERIZE
  • WHITEBOARD
  • BLACKBOARD
  • AQUA

reference : CameraCharacteristics.html#CONTROL_AVAILABLE_EFFECTS

プレビュー画面に Color Effect を適用する

プレビュー画面をターゲットにして Color Effect を要求する。

// プレビュー画面 をターゲットにする
surface = new Surface(textureView.getSurfaceTexture()) 
            captureBuilder.addTarget(surface);
// Color Effect モードを設定する
    captureBuilder.set(CaptureRequest.CONTROL_EFFECT_MODE, effect);
// Color Effectを要求する
captureRequest = captureBuilder.build();
    captureSession.capture(captureRequest, captureCallback, backgroundHand);

CaptureRequest が完了したら、Color Effectを繰り返し要求する

onCaptureCompleted
// Color Effectを繰り返し要求する
    captureSession.setRepeatingRequest(captureRequest, captureCallback, backgroundHandler);

reference : CaptureRequest#CONTROL_EFFECT_MODE

Color Effect を適用した写真を撮る

プレビュー画面と写真は、連動していない。
写真を撮る時は、ImageReader をターゲットにしてColor Effectを要求する。

// ImageReader をターゲットにする
surface = imageReaderStill.getSurface();
captureBuilder.addTarget(surface);
// Color Effect モードを設定する
    captureBuilder.set(CaptureRequest.CONTROL_EFFECT_MODE, effect);
// Color Effectを要求する
    captureSession.capture(captureBuilder.build(), captureCallback, backgroundHand);

スクリーンショット

SEPIAの例

color.png sepia.png

サンプルコードをgithub に公開した。
https://github.com/ohwada/Android_Samples/tree/master/Camera224

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1