调整位图大小是在裁剪中裁剪而不是缩放

时间:2014-04-09 14:22:43

标签: android android-view

我无法弄清楚如何调整位图的大小。基于这里的帖子Bitmap.createScaledBitmap是这样做的方法,但它对我来说不起作用。由于视图的性质,我在onDraw中做了所有事情所以我不认为我可以使用布局或ImageView。这就是我正在做的事情:

我有帝国大厦200x200的图像。我运行此代码进行设置:

    private void setupBitmap() {

        int bitmapSize = 100;

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

这是我的onDraw:

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

这是结果,请注意图像刚裁剪而未调整大小:

enter image description here

对于s& g,如果我设置bitmapSize = 200,它看起来像这样:

enter image description here

2 个答案:

答案 0 :(得分:3)

好的,我已经弄清楚了。对我来说有用的是在创建位图时保留位图。然后,当您在画布上绘制它时,将其设置为正确的大小。我假设createScaledBitmap函数被破坏了?

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

答案 1 :(得分:0)

您可以尝试使用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);