BitmapFactory.decodeFile与decodeStream之间的区别

时间:2016-04-11 16:35:10

标签: java android bitmap stream bitmapfactory

如果我们的File名称为f,那么

是否有任何真正的区别

BitmapFactory.decodeStream(new FileInputStream(f))

BitmapFactory.decodeFile(f.getAbsolutePath())

3 个答案:

答案 0 :(得分:2)

没有

以下是来自the now-current source codedecodeFile()方法的全部内容:

public static Bitmap decodeFile(String pathName, Options opts) {
    Bitmap bm = null;
    InputStream stream = null;
    try {
        stream = new FileInputStream(pathName);
        bm = decodeStream(stream, null, opts);
    } catch (Exception e) {
        /*  do nothing.
            If the exception happened on open, bm will be null.
        */
        Log.e("BitmapFactory", "Unable to decode stream: " + e);
    } finally {
        if (stream != null) {
            try {
                stream.close();
            } catch (IOException e) {
                // do nothing here
            }
        }
    }
    return bm;
}

与你或我所做的事情没有实质性的不同。

答案 1 :(得分:0)

decodeFile()获取文件名并从那里解码图像。 decodeStream()接受InputStream,它可以是文件以外的任何内容。例如,您可以从网络连接或zip文件中获取数据,而无需先提取文件。

如果您只有一个文件,则更容易使用decodeFile()

答案 2 :(得分:0)

有区别。使用decodeFile()方法,您无法管理FileNotFound异常,而使用decodeStream()方法则可以。

因此,如果您确定要加载文件,则应使用decodeFile()。否则,您应该手动初始化FileStream并使用decodeStream()方法。