这是我正在使用的代码:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap imatgeOriginal = BitmapFactory.decodeFile(imageUrl, options);
Bitmap resizedbitmap = Bitmap.createScaledBitmap(imatgeOriginal, 1000, 1000, true);
如您所见,我使用选项调整图像大小,但无论如何它只是在最后一行崩溃,抛出 NullPointerException。imatgeOriginal
也是_null
为什么会这样?
一些注意事项:
- 图像为 2 MB(小于 16 MB 限制),大小为 1105 × 1491
- 图片确实存在
- 相同的代码适用于小于 1.5 MB 的图像
logcat 中的输出:
08-22 15:11:13.249: E/AndroidRuntime(5404): FATAL EXCEPTION: main
08-22 15:11:13.249: E/AndroidRuntime(5404):
java.lang.NullPointerException 08-22 15:11:13.249:
E/AndroidRuntime(5404): at
android.graphics.Bitmap.createScaledBitmap(Bitmap.java:432) 08-22
15:11:13.249: E/AndroidRuntime(5404): at
myclass.onAnimationEnd(productView.java:2126) 08-22 15:11:13.249:
E/AndroidRuntime(5404): at
android.view.animation.AnimationSet.getTransformation(AnimationSet.java:397)
编辑:
发生了一些奇怪的事情,文件图像存在,路线是正确的。但是 android 将此图像检测为 CORRUPT 或至少无法使用任何可用工具(默认图库、文件资源管理器、没有我的应用程序)打开它。但是,如果我将图像下载到我的计算机,图像会完美显示。这个应用程序也在 iOS 中运行,并且实际上在那里可以看到相同的图像并且看起来没有损坏。
所以我猜Android加载JPEG文件有一些限制。
各位有遇到过类似的问题吗?
我找到了一些资源: http ://code.google.com/p/skia/issues/detail ?id=69#c2 无法使用 BitmapFactory.decodeFile 加载 JPEG 图像。返回空