我的可绘制文件夹中有大量资源。所有文件都大于500KB。我必须在srollView中一次加载所有这25个图像。像往常一样,我耗尽了内存。有没有什么办法来以编程方式减少图像的大小。从可绘制文件创建文件
我得到这个函数,但它的参数是一个文件,我不知道如何从drawable创建一个文件。
private Bitmap decodeFile(File f){ Bitmap b = null; try { //Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; FileInputStream fis = new FileInputStream(f); BitmapFactory.decodeStream(fis, null, o); fis.close(); int scale = 1; if (o.outHeight > IMAGE_MAX_SIZE || o.outWidth > IMAGE_MAX_SIZE) { scale = Math.pow(2, (int) Math.round(Math.log(IMAGE_MAX_SIZE/(double) Math.max(o.outHeight, o.outWidth))/Math.log(0.5))); } //Decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; fis = new FileInputStream(f); b = BitmapFactory.decodeStream(fis, null, o2); fis.close(); } catch (FileNotFoundException e) { } return b; }
我必须去thorugh此屏幕循环多次的一些遍历系统显示内存不足,它是去除从堆栈后面的其他意见后,但我真的需要它。 请帮帮我。
感谢您的帮助。我得到这个错误... InputStream is =(InputStream)getResources()。openRawResource(R.drawable.image);请告诉我如何创建该文件也 – James 2011-05-05 10:13:14
我不得不像这样施放它。 InputStream是=(InputStream)getResources()。openRawResource(R.drawable.simplelist); – James 2011-05-05 10:13:42
“getResources”是一个在Activity类下定义的函数,因此您确定您拥有活动的上下文,您可以在其中编写获取输入流的代码。 – mudit 2011-05-05 10:14:56