2012-05-31 79 views
0

我有一个图像路径,我解码成一个位图。我发现该位图很大,并试图调整它。它没有工作(图像太大),我的代码好吗?为什么我的图片不能调整大小?

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

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

myImage.setImageBitmap(myBitmap); 
+0

你是什么意思,它没有工作?你是否获得了“例外”,或者它是否仅仅停留在框架上太大? – Codeman

+0

我已更新我的问题:它保持太大。 – user1420042

+0

您可能更适合使用FrameLayout而不是ImageButton。试一试,不要改变任何东西,看看它是否调整大小 – Codeman

回答

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

它的设计,不改变原有的位图。你没有捕获参考,所以它只是被扔掉。

请记住,以这种格式创建位图会占用更多的内存,因为您在创建新位图的同时仍保留原来的位图。如果你经常这样做,而不是扔掉旧的参考,那么你的堆将迅速增长。

+0

好点,位图在Android中是不可变的 – Codeman

+0

你可以让它们变为可变的。他只是使用了静态方法。它不会更改原始位图。它会创建一个新的位图。 – DeeV

+0

你是对的,他将不得不创建一个新的位图实例,而不是一个新的参考。 – Codeman