色の調整やホワイトバランスを調整するにあたっては基本的な機能としてandroidにそなわっているようです!
APIレベル5からほぼ実装されています。
また、parameterを用いる事でよりさまざまなエフェクトや効果を実装できるようなので、まとめてみました。
個人的にはcolorをいじるのを触ってみるのが楽しいかと思います。
以前作成したカメラファイルをもとにパラメータを変更します。
まず、パラメーターの設定についてですが、
Camera.Parameters parameters = myCamera.getParameters(); parameters.set***(***); myCamera.setParameters(parameters); myCamera.startPreview();
カメラからパラメータ要素を取得後に変更をしてセットをします。
階調の落差
parameters.setAntibanding(Camera.Parameters.***);
と設定をします。
入る値としては
ANTIBANDING_50HZ : ANTIBANDING_60HZ : ANTIBANDING_AUTO : ANTIBANDING_OFF :
ですが、階調の落差と言う言葉でおそらくつけてもそこまで変化のあるパラメータではありませんが、色の移り変わりを滑らかにするパラメータだと思います。(間違いがあればご連絡いただけると幸いです。)
つまりは
ANTIBANDING_50HZ :境目をやわらかくする(強) ANTIBANDING_60HZ :境目をやわらかくする(弱) ANTIBANDING_AUTO :境目をやわらかくする(自動) ANTIBANDING_OFF :境目はがちがちで表示。
だと思います。境界や、顔認識を行う場合にはOFFにした方がよいかと思いますが、通常の写真撮影に関しては、AUTOをつけておくと、やわらかな写真がとれると思います。
フラッシュ設定
parameters.setFlashMode(Camera.Parameters.***)
と設定をします。
入力できる値は
FLASH_MODE_AUTO:自動 FLASH_MODE_OFF:オフ FLASH_MODE_ON :オン FLASH_MODE_RED_EYE:赤め軽減 FLASH_MODE_TORCH :常に光り続ける。
上記の設定が用意されているのですが、
機種によってフラッシュが用意されているものと用意されてないものが存在する為に
特別な理由がない限りは利用しない方が無難です。
利用する場合は利用可能かどうかのチェックを行って可能であれば利用するようにバグ回避を行いましょう。
最後に記載しております。
シーン設定
parameters.setSceneMode(Camera.Parameters.***);
と設定をします。
入力できるのは
SCENE_MODE_ACTION:動いている対象 SCENE_MODE_AUTO:自動 SCENE_MODE_BARCODE:バーコード SCENE_MODE_BEACH:ビーチ SCENE_MODE_CANDLELIGHT:ろうそくの炎のようなあたたかい色 SCENE_MODE_FIREWORKS:花火用 SCENE_MODE_LANDSCAPE:風景・離れた対象用 SCENE_MODE_NIGHT:夜 SCENE_MODE_NIGHT_PORTRAIT:夜の人物用 SCENE_MODE_PARTY:パーティー用 SCENE_MODE_PORTRAIT:人物用 SCENE_MODE_SNOW:雪用 SCENE_MODE_SPORTS:スポーツなどのとても早く動く対象 SCENE_MODE_STEADYPHOTO:友達用・握手とかの時にぼけないような。 SCENE_MODE_SUNSET:夕暮れ用 SCENE_MODE_THEATRE:劇場・シアター用
シーンに関しては恐ろしいほどに、いろいろな場面用がありました。
カメラ内の設定で変更するのは少し面倒ですが、何かの専用のカメラを作成する場合には、設定しておくとユーザーに喜ばれるかもしれません!
ホワイトバランス
parameters.setWhiteBalance(Camera.Parameters.***);
で設定をします。
入力できる値は
WHITE_BALANCE_AUTO:自動 WHITE_BALANCE_CLOUDY_DAYLIGHT:曇りの日 WHITE_BALANCE_DAYLIGHT:お昼 WHITE_BALANCE_FLUORESCENT:蛍光灯の下 WHITE_BALANCE_INCANDESCENT:白熱灯の下 WHITE_BALANCE_SHADE:影 WHITE_BALANCE_TWILIGHT:日の出前や日没後の薄明かり WHITE_BALANCE_WARM_FLUORESCENT:暖色の蛍光灯のした。
です、こちらも特に専用のカメラではない限りはAUTOが無難だと思います。
カラーエフェクト
parameters.setColorEffect(Camera.Parameters.***);
で設定します。
入力できる値は
EFFECT_AQUA:青のモノクロ EFFECT_BLACKBOARD:不明 EFFECT_MONO:モノクロ EFFECT_NEGATIVE:ネガっぽく色が反転 EFFECT_NONE:通常 EFFECT_POSTERIZE:不明 EFFECT_SEPIA:セピア EFFECT_SOLARIZE:不明 EFFECT_WHITEBOARD:不明
設定値ですが、galaxy sでは上記の不明のものに関しては動作しませんでした。
基本的には、自分で作らないといけないようです。セピアなどは綺麗に表示できるのですが、
簡単なサンプルを作成する場合に、つける程度の方が無難なようです。
もし特別なカラーエフェクトが必要な場合は自分でbitmapで色の変換を行う必要があります。
各設定に関してはサポートされているかどうかと言うのが、
下記により配列で取得できます。基本的にサポートされているものは問題ありませんが、
flashなど一部のユーザーしか利用できない機能などについてはサポートで分岐させて利用をしましょう。
Camera.Parameters.getSupportedAntibanding() Camera.Parameters.getSupportedColorEffects() Camera.Parameters.getSupportedFlashModes() Camera.Parameters.getSupportedFocusModes() Camera.Parameters.getSupportedSceneModes() Camera.Parameters.getSupportedWhiteBalance()
以上です。
エフェクトをうまく使う事で作りたいアプリを簡単につくれるようになっていますので、いろいろ試してみると面白い部分だと思います。