[ACCEPTED]-Android Scaling Canvas Bitmap-android-canvas

Accepted answer
Score: 11
canvas.drawBitmap(out, null, thumbnailRectF, thumbCanvasPaint); 

should change to

canvas.drawBitmap(out, new Rect(0,0,mBitmap.getWidht, mBitmap.getheight), thumbnailRectF, thumbCanvasPaint);

There is no need for

Bitmap out = Bitmap.createScaledBitmap(mBitmap, (int) thumbWidth, (int)....

Also 2 check that mScaled is true all the time 1 when zoom is greater than 1

Score: 3

Scale bitmap by Bitmap.createScaledBitmap then draw will not work

The 5 solution for scale the canvas bitmap is 4 use this function (from the docs)

void drawBitmap (Bitmap bitmap,  Rect src, Rect dst, Paint paint)
// dst : Rect: The rectangle that the bitmap will be scaled/translated to fit into

so by changing 3 the size of dst, your bitmap size will change

Here 2 is example if I want to draw a bitmap at 1 top-left and scale it to 100px x 120px

Bitmap bitmap = BitmapFactory.decodeResource(...);//bitmap to be drawn

float left = 0;
float top = 0;
RectF dst = new RectF(left, top, left + 100, top + 120); // width=100, height=120

canvas.drawBitmap(bitmap, null, dst, null);

More Related questions