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

画像は、文字列である newImagePath 変数に格納されます。上記は outOfMemory Exception をスローします。

また、画像を 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;

次に、フィールドを見てこのビットマップのサイズを取得します (ビットマップを使用しないでください: null になります):

options.outWidth;
options.outHeight;

次に、スケーリングされたビットマップを作成します (画面のサイズによって異なります)。これを行うには、次を見ることができます

BitmapFactory.Options.inSampleSize
于 2012-12-12T08:55:27.930 に答える