-6

私はプロジェクトを行っており、保存された画像ではなく、表示される画面のコントラストを設定したいと考えています。カメラの効果を調べています。そして、次のパラメーターを見つけました。

String   EFFECT_AQUA

String   EFFECT_BLACKBOARD

String   EFFECT_MONO

String   EFFECT_NEGATIVE

String   EFFECT_NONE

String   EFFECT_POSTERIZE

String   EFFECT_SEPIA

String   EFFECT_SOLARIZE

String   EFFECT_WHITEBOARD

使い方や違いが知りたいです。また、それらの使用方法を示す例を教えてください。

ちなみに、EffectFactoryも見ました。この「String EFFECT_CONTRAST」のようなものを見つけましたが、保存された画像でのみ機能し、画面表示では機能しませんか?

4

1 に答える 1

3

まず、これらのボタンをレイアウトに追加します。

<Button
    android:id="@+id/captureFront"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:onClick="onCaptureClick"
    android:text="Take Photo" />

<Button
    android:id="@+id/sepia"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:onClick="onSepiaClick"
    android:text="Sepia"
    android:visibility="visible" />

<Button
    android:id="@+id/none"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:onClick="onNoneClick"
    android:text="None" />

<Button
    android:id="@+id/solarize"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:onClick="onSolarizeClick"
    android:text="Solarize" />

<Button
    android:id="@+id/mono"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:onClick="onMonoClick"
    android:text="Mono" />

<Button
    android:id="@+id/negative"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:onClick="onNegativeClick"
    android:text="Negative" />

次に、それぞれの onClick メソッドを次に示します。

    public void onNoneClick(View view){
    p = camera.getParameters();
    p.setColorEffect("none");
    camera.setParameters(p);
}

public void onMonoClick(View view){
    p = camera.getParameters();
    p.setColorEffect("mono");
    camera.setParameters(p);
}

public void onSepiaClick(View view){
    p = camera.getParameters();
    p.setColorEffect("sepia");
    camera.setParameters(p);
}
public void onSolarizeClick(View view){
    p = camera.getParameters();
    p.setColorEffect("solarize");
    camera.setParameters(p);
}
public void onNegativeClick(View view){
    p = camera.getParameters();
    p.setColorEffect("negative");
    camera.setParameters(p);
}

単純に pprivate Camera.Parameters p; と camera はprivate Camera camera;

編集

public static Bitmap doBrightness(Bitmap src, int value) {
    // image size
    int width = src.getWidth();
    int height = src.getHeight();
    // create output bitmap
    Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());
    // color information
    int A, R, G, B;
    int pixel;

    // scan through all pixels
    for(int x = 0; x < width; ++x) {
        for(int y = 0; y < height; ++y) {
            // get pixel color
            pixel = src.getPixel(x, y);
            A = Color.alpha(pixel);
            R = Color.red(pixel);
            G = Color.green(pixel);
            B = Color.blue(pixel);

            // increase/decrease each channel
            R += value;
            if(R > 255) { R = 255; }
            else if(R < 0) { R = 0; }

            G += value;
            if(G > 255) { G = 255; }
            else if(G < 0) { G = 0; }

            B += value;
            if(B > 255) { B = 255; }
            else if(B < 0) { B = 0; }

            // apply new pixel color to output bitmap
            bmOut.setPixel(x, y, Color.argb(A, R, G, B));
        }
    }

    // return final image
    return bmOut;
}



  int brightness;
 SeekBar seekbarbrightness=(SeekBar)findViewById(R.id.seekBar1);
 seekbarbrightness.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

         @Override
         public void onStopTrackingTouch(SeekBar arg0) {
          // TODO Auto-generated method stub

         }

         @Override
         public void onStartTrackingTouch(SeekBar arg0) {
          // TODO Auto-generated method stub

         }

         @Override
         public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {

             // TODO Auto-generated method stub

             brightness=progress;
             Bitmap bitmap=doBrightness(originalbitmap,brightness);
             imageView.setImageBitmap(bitmap);
         }
        });

これは Bitmap で動作しますが、使用したいもので動作するように変更できます。

于 2013-04-13T08:44:41.663 に答える