创建缩放位图

时间:2016-01-08 15:42:19

标签: android matrix bitmap

我需要测试一个简单的任务。我想通过将postScale设置为Matrix并在创建中使用它来创建缩放位图,这里是代码:

Matrix matrix = new Matrix();
matrix.postScale(5.0f, 5.0f);
Bitmap bitmap = Bitmap.createBitmap(bitmapSrc, 500, 500, 50, 50, matrix, true);

我认为这段代码应该从5倍的缩放源裁剪50x50位图,但是当我使用这个位图在ImageView

中显示结果时
imageView.setImageBitmap(bitmap);

缩放似乎不起作用,我从原始源位图获得50x50位图(没有缩放)。

我想我错过了一些东西,但我无法弄清楚是什么。任何帮助高度赞赏

编辑:我还尝试将最后一个参数设置为false,但它没有帮助,但如果我在矩阵i&{i}中使用postRotate #39; m旋转位图

2 个答案:

答案 0 :(得分:1)

Android包含函数Bitmap.createScaledBitmap() ... 您可以按如下方式使用它:

public Bitmap getScaledBitmap(Bitmap bitmap, float scale) {
    Integer originalHeight = bitmap.getHeight();
    Integer originalWidth = bitmap.getWidth();

    Integer requiredHeight = Math.round(originalHeight * scale);
    Integer requiredWidth = Math.round(originalWidth * scale);

    return Bitmap.createScaledBitmap(bitmap, requiredWidth, requiredHeight, true);
}

您可以在此处查看其他相关功能here

答案 1 :(得分:0)

可能因为缩放发生得太晚而且裁剪区域因此而超出界限。你是用preScale而不是postScale尝试的吗?

如果这不起作用,您可以先尝试使用小位图中的坐标,如下所示:

Bitmap bitmap = Bitmap.createBitmap(bitmapSrc, 100, 100, 10, 10, matrix, true);