作为我程序的一部分,我需要显示属于文件夹的图像(JPG文件)。要做到这一点,我有这个代码:
private ArrayList<ImageGalleryItem> getData() {
final ArrayList<ImageGalleryItem> imageItems = new ArrayList<>();
try {
Intent intent = getIntent();
String imagesFolder = intent.getStringExtra("SourceFolder");
String questionId = Integer.toString(intent.getIntExtra("QuestionId", 0));
File file = new File(imagesFolder);
if (file.exists() && file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
try {
if (f.getName().startsWith(questionId + "_")) {
Bitmap bitmap = BitmapFactory.decodeFile(f.getPath());
imageItems.add(new ImageGalleryItem(bitmap, f.getName()));
}
}
catch (Exception e)
{
Log.e("TDC@", e.getMessage());
}
}
}
}
catch (Exception e)
{
Log.e("TDC@", e.getMessage());
}
return imageItems;
}
指令“BitmapFactory.decodeFile(f.getPath());”为所有文件创建位图文件,但为其中一个文件创建。当针对冲突文件达到该代码时,decodeFile会抛出异常,但更奇怪的是try catch块没有捕获异常。
使用F7进行调试时,BitmapFactory.java中抛出异常,在此代码中显示的throw中:
try {
bm = nativeDecodeByteArray(data, offset, length, opts);
if (bm == null && opts != null && opts.inBitmap != null) {
throw new IllegalArgumentException("Problem decoding into existing bitmap");
}
setDensityFromOptions(bm, opts);
} finally {
Trace.traceEnd(Trace.TRACE_TAG_GRAPHICS);
}
所以问题是,为什么无法正确解码位图以及未捕获异常的原因。
如果我在移动文件管理器中浏览该文件,并打开该文件,则会正确显示,因此图像格式没有问题。此外,此图像是使用相机拍摄的,与正确解码的其他图像相同。
如何解决这个问题,还是有另一种方法可以解决这个问题吗?
答案 0 :(得分:0)
我不知道为什么会这样。试试这个:
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(f));