BitmapFactory.decodeFile 与 decodeStream 之间的区别
Difference between BitmapFactory.decodeFile vs decodeStream
如果我们有一个名为 f
的 File
,
和 之间有什么真正的区别吗?
BitmapFactory.decodeStream(new FileInputStream(f))
和
BitmapFactory.decodeFile(f.getAbsolutePath())
decodeFile()
获取文件名并从那里解码图像。 decodeStream()
接受一个 InputStream
,它可以是文件以外的任何东西。例如,您可以从网络连接或 zip 文件中获取数据,而无需先解压缩文件。
如果您只有一个文件,那么使用 decodeFile()
.
会更容易
没有
这是 decodeFile()
方法的全部内容,来自 the now-current source code:
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() 方法无法管理 FileNotFound 异常,而使用 decodeStream() 方法则可以。
因此,如果您确定您的文件将被加载,您应该使用 decodeFile()。否则,您应该手动初始化 FileStream 并使用 decodeStream() 方法。
如果我们有一个名为 f
的 File
,
BitmapFactory.decodeStream(new FileInputStream(f))
和
BitmapFactory.decodeFile(f.getAbsolutePath())
decodeFile()
获取文件名并从那里解码图像。 decodeStream()
接受一个 InputStream
,它可以是文件以外的任何东西。例如,您可以从网络连接或 zip 文件中获取数据,而无需先解压缩文件。
如果您只有一个文件,那么使用 decodeFile()
.
没有
这是 decodeFile()
方法的全部内容,来自 the now-current source code:
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() 方法无法管理 FileNotFound 异常,而使用 decodeStream() 方法则可以。
因此,如果您确定您的文件将被加载,您应该使用 decodeFile()。否则,您应该手动初始化 FileStream 并使用 decodeStream() 方法。