我需要测试一个简单的任务。我想通过将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旋转位图
答案 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);