Tuesday 12 February 2013

Image Contrast android


From the original image:
Original Image
Original Image
I take contrast on this image:
Contrast = 100
Contrast = 100
Contrast = 50
Contrast = 50
First, calculate the contrast value: contrast = ((value + 100) / 100) ^ 2 (square by 2, or power 2).
Then do this for each color channel:
+ Take pixel color divided by 255
+ Minus 0.5
+ Multiply contrast value calculated above.
+ Plus 0.5
+ Multiply by 255
Here the implementation:

public static Bitmap createContrast(Bitmap src, double 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;
 // get contrast value
 double contrast = Math.pow((100 + value) / 100, 2);

 // 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);
   // apply filter contrast for every channel R, G, B
   R = Color.red(pixel);
   R = (int)(((((R / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
   if(R < 0) { R = 0; }
   else if(R > 255) { R = 255; }

   G = Color.red(pixel);
   G = (int)(((((G / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
   if(G < 0) { G = 0; }
   else if(G > 255) { G = 255; }

   B = Color.red(pixel);
   B = (int)(((((B / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
   if(B < 0) { B = 0; }
   else if(B > 255) { B = 255; }

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

 // return final image
 return bmOut;
}
Hope you enjoy it!

No comments:

Post a Comment