gpt4 book ai didi

android - Android Studio-旋转图像时如何避免OutOfMemoryError

转载 作者:行者123 更新时间:2023-12-03 08:46:16 24 4
gpt4 key购买 nike

当我以最简单的形式旋转图像时,如何避免OutOfMemoryError。我是Android Studio和Java的新手。这是图像旋转的静态方法

public static Bitmap rotateBitmap(Bitmap bitmap, int orientation, Context context) {

Matrix matrix = new Matrix();
switch (orientation) {
case ExifInterface.ORIENTATION_NORMAL:
return bitmap;
case ExifInterface.ORIENTATION_FLIP_HORIZONTAL:
matrix.setScale(-1, 1);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
matrix.setRotate(180);
break;
case ExifInterface.ORIENTATION_FLIP_VERTICAL:
matrix.setRotate(180);
matrix.postScale(-1, 1);
break;
case ExifInterface.ORIENTATION_TRANSPOSE:
matrix.setRotate(90);
matrix.postScale(-1, 1);
break;
case ExifInterface.ORIENTATION_ROTATE_90:
matrix.setRotate(90);
break;
case ExifInterface.ORIENTATION_TRANSVERSE:
matrix.setRotate(-90);
matrix.postScale(-1, 1);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
matrix.setRotate(-90);
break;
default:
return bitmap;
}
try {
Bitmap bmRotated = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth()/2, bitmap.getHeight()/2, matrix, true);
bitmap.recycle();
return bmRotated;
}
catch (OutOfMemoryError e) {
e.printStackTrace();
Toast.makeText(context, "Error:" + e, Toast.LENGTH_SHORT).show();

return null;
}
}

最佳答案

我不知道您的用例是什么,但是您无需借助矩阵就可以进行简单的轮换。用大位图耗尽内存很容易。

另一方面,这将以0到360度之间的任意随机量旋转任何给定的imageview,而开销却相当低:

        display = (ImageView) findViewById(R.id.someview);
int randomRot;
Random rand = new Random();
randomRot=rand.nextInt(360);
display.setRotation((float) randomRot);

关于android - Android Studio-旋转图像时如何避免OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53256968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com