BitmapFactory.decodeFile与decodeStream之间的差异



如果我们有一个名为fFile,之间有真正的区别吗

BitmapFactory.decodeStream(new FileInputStream(f))

BitmapFactory.decodeFile(f.getAbsolutePath())

否。

以下是decodeFile()方法的全部内容,来自现在的源代码:

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;
}

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

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

如果您只有一个文件,那么只使用decodeFile()会更容易。

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

所以,如果你确定你的文件会被加载,你应该使用decodeFile()。否则,您应该手动初始化FileStream并使用decodeStream()方法。

相关内容

  • 没有找到相关文章

最新更新