0

ビットマップにデコードする画像パスがあります。そのビットマップが大きすぎることがわかり、サイズを変更しようとしました。うまくいきませんでした (画像が大きすぎました)。私のコードは大丈夫ですか?

ImageButton myImage = (ImageButton) findViewById(R.id.image);

Bitmap myBitmap = BitmapFactory.decodeFile(selectedImagePath);
Bitmap.createScaledBitmap(myBitmap, NEW_WIDTH, NEW_HEIGHT, true);

myImage.setImageBitmap(myBitmap);
4

1 に答える 1

3
Bitmap myBitmap = BitmapFactory.decodeFile(selectedImagePath);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(myBitmap, NEW_WIDTH, NEW_HEIGHT, true);
myBitmap.recycle();
myBitmap = null;

元のビットマップを変更しないように設計されています。参照をキャプチャしていないため、単に破棄されています。

この形式でビットマップを作成すると、古いビットマップを保持したまま新しいビットマップを作成するため、より多くのメモリが消費されることに注意してください。これを非常に頻繁に行い、古い参照を破棄しない場合、ヒープは非常に急速に大きくなります。

于 2012-05-31T21:57:34.850 に答える