Color Effect Using Seek bar



public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     
        imageview = (ImageView)findViewById(R.id.iv);
        button1 = (Button) findViewById(R.id.button1);  

        redBar = (SeekBar)findViewById(R.id.redbar);
        greenBar = (SeekBar)findViewById(R.id.greenbar);
        blueBar = (SeekBar)findViewById(R.id.bluebar);
     
        redBar.setOnSeekBarChangeListener(colorBarChangeListener);
        greenBar.setOnSeekBarChangeListener(colorBarChangeListener);
        blueBar.setOnSeekBarChangeListener(colorBarChangeListener);
     
        BitmapDrawable drawable = (BitmapDrawable) imageview.getDrawable();
    bitmap = drawable.getBitmap();

DisplayMetrics metrics = getBaseContext().getResources().getDisplayMetrics();
w = bitmap.getWidth();
    h = bitmap.getHeight();      
 
   button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Bitmap image = doColorFilter(bitmap,  10,  10,  10);
Log.i("doColorFilter_image", "bitmapimage" +image);
imageview.setImageBitmap(image);

setColorFilter(imageview);
}
});      
      //  setColorFilter(imageview);
    }
 
    public static Bitmap doColorFilter(Bitmap src, double redBar, double greenBar, double blueBar) {
// 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);
// apply filtering on each channel R, G, B
A = Color.alpha(pixel);
R = (int)(Color.red(pixel) * redBar);
G = (int)(Color.green(pixel) * greenBar);
B = (int)(Color.blue(pixel) * blueBar);
// set new color pixel to output bitmap
bmOut.setPixel(x, y, Color.argb(A, R, G, B));
}
}
// return final image
return bmOut;
}
 
    OnSeekBarChangeListener colorBarChangeListener  = new OnSeekBarChangeListener()  {
   
    @Override
    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
    setColorFilter(imageview);
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
 
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
 
    }};
 
    private void setColorFilter(ImageView iv){
   
       /*
        * 5x4 matrix for transforming the color+alpha components of a Bitmap.
        * The matrix is stored in a single array, and its treated as follows:
        * [  a, b, c, d, e,
        *    f, g, h, i, j,
        *    k, l, m, n, o,
        *    p, q, r, s, t   ]
        *
        * When applied to a color [r, g, b, a], the resulting color is computed
        * as (after clamping)
        * R' = a*R + b*G + c*B + d*A + e;
        * G' = f*R + g*G + h*B + i*A + j;
        * B' = k*R + l*G + m*B + n*A + o;
        * A' = p*R + q*G + r*B + s*A + t;
        */  
   
     float redValue = ((float)redBar.getProgress())/255;
     float greenValue = ((float)greenBar.getProgress())/255;
     float blueValue = ((float)blueBar.getProgress())/255;
   
     float[] colorMatrix = {    
    redValue, 0,          0,         0, 0,      //red
    0,        greenValue, 0,         0, 0,      //green
    0,        0,          blueValue, 0, 0,      //blue
    0,        0,          0,         1, 0      //alpha  
     };
   
     ColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);  
     iv.setColorFilter(colorFilter);

    }
}



1 comment:

amarnath said...

Please share Erase paint code .

Select DateRange UsingRangePicker.

  /* * This Method is for select range from picker. * */ private fun selectDateRangeUsingRangePicker () { pageNumber = 1 val displ...