我将一些jpeg文件存储到应用程序私有存储中。我在ImageView中显示它们,一切正常。
但对于某些jpeg,其大小与其他大小相似,BitmapFactory.decodeFile返回null。
这与Microsoft Paint生成的所有jpeg一起发生:只需将jpeg运行良好,加载到msPaint并保存未经修改,以获得无效的jpeg。
这是代码(文件路径和文件名已正确设置,因为它适用于许多文件):
...
public class MainActivity extends ActionBarActivity {
...
private ImageView myImage;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myImage = (ImageView) findViewById(R.id.imageView1);
File f=new File(basedir, list.get(imageIndex).getFile());
Bitmap b = BitmapFactory.decodeFile(f.getPath());
if (b != null){
myImage.setImageBitmap(b);
} else {
myImage.setImageResource(R.drawable.default);
}
...
}
...
}
我也尝试了FileInputStream,正如其他地方所建议的那样但结果相同:
...
File f=new File(basedir, list.get(imageIndex).getFile());
FileInputStream fis = new FileInputStream(f);
Bitmap b = BitmapFactory.decodeStream(fis);
if (b != null){
myImage.setImageBitmap(b);
} else {
myImage.setImageResource(R.drawable.default);
}
...
BitmapFactory有任何已知限制吗?有没有办法检查jpeg特征??