Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height) return wrong bitmap

android, image

Solution

Basically your problem arises form the fact that you create a bitmap. You don't put anything in it. You then create a smaller bitmap and then you render an imageView to that smaller bitmap.

This cuts off the bottom 100 pixels and right 20 pixels.

You need to Create the large bitmap. Add the imageview data to that bitmap. Then resize it.

The following code should work:

Bitmap bitmap = Bitmap.createBitmap(imgView.getWidth(),imgView.getHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
imgView.draw(canvas);
Bitmap result =Bitmap.createBitmap(bitmap,imgView.getLeft()+10, imgView.getTop()+50, imgView.getWidth()-20, imgView.getHeight()-100);
bitmap.recycle();

Problem

I have to crop a bitmap image. For this, I am using ``` Bitmap bitmap = Bitmap.createBitmap(imgView.getWidth(),imgView.getHeight(), Bitmap.Config.RGB_565); Bitmap result =Bitmap.createBitmap(bitmap,imgView.getLeft()+10, imgView.getTop()+50, imgView.getWidth()-20, imgView.getHeight()-100); bitmap.recycle(); Canvas canvas = new Canvas(result); imgView.draw(canvas); ``` But it cuts the bottom and right of the bitmap. Top and Left part of the bitmap exists in the output. That means x and y position has no effect. I am searched for good documentation. But I couldn't. Thanks in Advance What is the problem here and how to solve?

Original source