Monday, March 7, 2011

Android Multimedia How to create an image with reflexion?

By Magesh Kumar   Posted at  4:51 AM   Android No comments


This takes an existing bitmap and adds a reflection to the bottom. 
 public static Bitmap createReflectedImage(Context context, Bitmap originalImage) {
  //The gap we want between the reflection and the original image
  final int reflectionGap = 4;
 
  int width = originalImage.getWidth();
  int height = originalImage.getHeight();
 

  //This will not scale but will flip on the Y axis
  Matrix matrix = new Matrix();
  matrix.preScale(1, -1);
 
  //Create a Bitmap with the flip matrix applied to it.
  //We only want the bottom half of the image
  Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height/2, width, height/2, matrix, false);
 
  
  //Create a new bitmap with same width but taller to fit reflection
  Bitmap bitmapWithReflection = Bitmap.createBitmap(width
  , (height + height/2), Config.ARGB_8888);
 
  //Create a new Canvas with the bitmap that's big enough for
  //the image plus gap plus reflection
  Canvas canvas = new Canvas(bitmapWithReflection);
  //Draw in the original image
  canvas.drawBitmap(originalImage, 0, 0, null);
  //Draw in the gap
  Paint defaultPaint = new Paint();
  canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);
  //Draw in the reflection
  canvas.drawBitmap(reflectionImage,0, height + reflectionGap, null);
 
  //Create a shader that is a linear gradient that covers the reflection
  Paint paint = new Paint();
  LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0,
  bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff,
  TileMode.CLAMP);
  //Set the paint to use this shader (linear gradient)
  paint.setShader(shader);
  //Set the Transfer mode to be porter duff and destination in
  paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
  //Draw a rectangle using the paint with our linear gradient
  canvas.drawRect(0, height, width,
  bitmapWithReflection.getHeight() + reflectionGap, paint);
 
  return bitmapWithReflection;
 }

About the Author

Nulla sagittis convallis arcu. Sed sed nunc. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.
View all posts by: BT9

0 comments:

Back to top ↑
Connect with Us

What they says

© 2013 MaGeSH 2 help. WP Mythemeshop Converted by BloggerTheme9
Blogger templates. Proudly Powered by Blogger.