好的,有人帮我解决这个问题。我正在使用其他线程和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为null的问题。但是,如果我注释掉该行
int scale= determineCorrectScale(imageStream);
并将insampleSize设置为8或16或任何其他固定的手动编号,然后一切正常。任何人都可以解释这种行为或如何解决它?我的感觉说它是由于创建了两个静态类的Options对象,但这只是猜测。我仍然无法解决它:( 请帮助
答案 0 :(得分:2)
您正在重复使用相同的数据流。重置它,将数据缓存在字节数组中,或打开一个新流。