当使用Microsoft Paint保存jpeg时,android BitmapFactory.decodeFile返回null

时间:2015-11-05 11:50:28

标签: android bitmapfactory

我将一些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特征??

0 个答案:

没有答案