18

Android アプリにカメラのプレビューがあります。おそらくご存知のように、これはsurfaceviewAndroid で実装されています。

ユーザーが写真を撮ることができる写真アプリで、ユーザーがまだログインしていない場合、カメラのプレビュー (表面ビュー) をぼかしたい。 ユーザーがログインしている場合は、通常のプレビュー (ぼかしなし) を表示します。

のようなぼかし

ここに画像の説明を入力

でも仕方が無いらしい

いくつかのことが思い浮かびますが、それを達成する方法がわかりません

  1. ぼかしオーバーレイを使用してサーフェス ビューの上に配置しますが、そのようなぼかしオーバーレイを作成するにはどうすればよいですか?
  2. 別のアプローチは、ウィンドウの属性を変更することですが、私にはできませんsurfaceview

     getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
    

では、window を作成して surfaceview をオーバーレイし、そのようにフラグを設定できますか? 私はそうは思わない

表面ビューであるカメラのプレビューをぼかす方法を教えてください

注:カメラプレビューからの出力である領域をぼかしようとしているため、静止画像をぼかしているわけではありません。携帯電話のカメラをどこに向けるかによって、ぼかし領域が変化します

4

3 に答える 3

2

これを行う最善の方法は、コントロールのスクリーン ショットを撮り、それにぼかしを適用してから、元のコントロールの上にそのイメージを表示することです。これはヤフーの天気予報アプリが行う方法であり、Google がこのようなことを行うことを提案する方法です。

レンダー スクリプトは高速にブラーを行います。コードもいくつかありますが、現在は手元にありません。

これらは役立つかもしれません:

http://blog.neteril.org/blog/2013/08/12/blurring-images-on-android http://docs.xamarin.com/recipes/android/other_ux/drawing/blur_an_image_with_renderscript/

これを行う Android に組み込まれたメソッドがあることも読みましたが、API は公開されていないため、使用できません...これは最悪です。

于 2014-03-06T15:16:51.440 に答える
-4

カメラのパラメータを変更する必要があります。この場合はCamera.Parameters.setPictureSize().

ここでの基本的なワークフローは次のとおりです。

Camera.Parameters cp = mCamera.getParameters(); // get the current params
cp.set...(); // change something
mCamera.setParameters(cp); // write the params back

この関数で設定したすべての解像度がサポートされていることを確認してください。を介して、デバイスでサポートされている解像度のリストを取得できますCamera.Parameters.getSupportedPictureSizes()。このカメラのドキュメントを確認してください。

于 2014-03-07T06:40:51.790 に答える