문제

I can't figure out how to resize a bitmap. Based on posts here Bitmap.createScaledBitmap is the way to do it but it just doesn't work for me. Because of the nature of the view I'm doing everything in onDraw so I don't think I can use a layout or ImageView. Here's what I'm doing:

I have an image of the Empire State Building that's 200x200. I run this code to set it up:

    private void setupBitmap() {

        int bitmapSize = 100;

        Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.empirestate_sm);
        myBitmap = Bitmap.createScaledBitmap(originalBitmap, bitmapSize, bitmapSize, true);
    }

This is is my onDraw:

    protected void onDraw(Canvas canvas) {
         canvas.drawBitmap(myBitmap, 0, 0, null);
    }

And here is the result, note the image is just cropped and not resized:

enter image description here

Just for s&g's if I set the bitmapSize = 200 it looks like this:

enter image description here

도움이 되었습니까?

해결책

Ok I've figured it out. What worked for me is leaving the bitmap as is when you create it. Then when you draw it on the canvas set it to the right size. I'm assuming the createScaledBitmap function is broken??

   myCanvas.drawBitmap (landmarkImg, null, new RectF((float)0,(float)0,newWidth,newHeight),null);

다른 팁

You can try using an ImageView:

ImageView iv = (ImageView) findViewById(R.id.imageview);

Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.empirestate_sm);
myBitmap = Bitmap.createScaledBitmap(originalBitmap, bitmapSize, bitmapSize, true);

iv.setImageBitmap(myBitmap);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top