0
Drawable image = Drawable.createFromPath(newImagepath);
defective_image.setBackgroundDrawable(image);   

图像存储在 newImagePath 变量中,该变量是一个字符串。上面抛出了一个 outOfMemory 异常。

我还尝试将图像检索到 Bitmap 对象中。

Bitmap bitmapImg= BitmapFactory.decodeFile(newImagepath);

在上述情况下,bitmapImg 为 Null。(无一例外)

但是,如果将其作为文件检索,则它是成功的。这不符合我的目的,因为我希望这张图片成为 RelativeLayout 的背景。

File imageFile = new File(newImagepath);
String imgPath = imageFile.getAbsolutePath();

imgPath和newImagePath一样,结论是路径没有错。我还验证了图像在 SDCard 中的存在。

此图像是从设备的相机中捕获的。此代码在模拟器上成功运行。在设备上调试时,注意到上述故障。我也试过: -

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
4

2 回答 2

0

我宁愿使用BitmapFactory从文件路径解码图像:

Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
jpgView.setImageDrawable(bitmap);
于 2012-12-12T08:12:47.777 回答
0

这似乎是一个内存问题。所以我建议使用选项解码位图大小

options.inJustDecodeBounds = true;

然后通过查看字段来获取此位图的大小(不要尝试使用位图:它将为空):

options.outWidth;
options.outHeight;

然后创建一个缩放位图(取决于屏幕尺寸)。为此,您可以查看

BitmapFactory.Options.inSampleSize
于 2012-12-12T08:55:27.930 回答