Search code examples
androidbitmapcrop

Android Crop Center of Bitmap


I have bitmaps which are squares or rectangles. I take the shortest side and do something like this:

int value = 0;
if (bitmap.getHeight() <= bitmap.getWidth()) {
    value = bitmap.getHeight();
} else {
    value = bitmap.getWidth();
}

Bitmap finalBitmap = null;
finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value);

Then I scale it to a 144 x 144 Bitmap using this:

Bitmap lastBitmap = null;
lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);

Problem is that it crops the top left corner of the original bitmap, Anyone has the code to crop the center of the bitmap?


Solution

  • enter image description here

    This can be achieved with: Bitmap.createBitmap(source, x, y, width, height)

    if (srcBmp.getWidth() >= srcBmp.getHeight()){
    
      dstBmp = Bitmap.createBitmap(
         srcBmp, 
         srcBmp.getWidth()/2 - srcBmp.getHeight()/2,
         0,
         srcBmp.getHeight(), 
         srcBmp.getHeight()
         );
    
    }else{
    
      dstBmp = Bitmap.createBitmap(
         srcBmp,
         0, 
         srcBmp.getHeight()/2 - srcBmp.getWidth()/2,
         srcBmp.getWidth(),
         srcBmp.getWidth() 
         );
    }