好的,有人帮我解决这个问题。我正在使用其他线程和 android 教程推荐的 Bitmap.options 来计算 inSample 大小。以下代码导致空位图而不是缩放位图的问题
private int determineCorrectScale(InputStream imageStream){
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(imageStream, null, o);
// The new size we want to scale to
final int REQUIRED_SIZE = 100;
// Find the correct scale value. It should be the power of 2.
int scale = 1;
while (o.outWidth / scale / 2 >= REQUIRED_SIZE && o.outHeight / scale / 2 >= REQUIRED_SIZE) {
scale *= 2;
}
return scale;
}
private String saveScaledBitmapToPhone(Uri imagUri){
InputStream imageStream;
try {
imageStream = getContentResolver().openInputStream(imagUri);
int scale= determineCorrectScale(imageStream);
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = scale;
Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream, null, options );
.
.
.
.
} catch (Exception e) {
return imagUri.toString(); //default
}
}
yourSelectedImage 为空的问题。但是,如果我注释掉该行
int scale= determineCorrectScale(imageStream);
并将 insampleSize 设置为 8 或 16 或任何其他固定的手动数字,然后一切正常。任何人都可以解释这种行为或如何解决它?我的感觉说这是由于创建了两个静态类的 Options 对象,但这只是一个猜测。我仍然无法修复它:(请帮助