gpt4 book ai didi

android - 从 drawable 创建一个文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:00 25 4
gpt4 key购买 nike

我的可绘制文件夹中有大量资源。所有资源都超过 500KB。我必须在 srollView 中一次加载所有这 25 张图像。像往常一样,我的内存用完了。有没有办法以编程方式减小图像的大小。

我得到了这个函数,但它的参数是一个文件,我不知道如何从可绘制对象创建一个文件。

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;}

在多次遍历之后,我必须循环遍历此屏幕多次,系统显示内存不足,并且正在从堆栈中删除后面的其他 View ,但我实际上需要它。请帮助我。

最佳答案

您可以使用以下代码从您的可绘制资源中打开一个 InputStream:

InputStream is = getResources().openRawResource(id);

这里的 id 是你的可绘制资源的标识符。例如:R.drawable.abc

现在使用这个输入流你可以创建一个文件。如果您还需要有关如何使用此输入流创建文件的帮助,请告诉我。

更新:将数据写入文件:

try
{
File f=new File("your file name");
InputStream inputStream = getResources().openRawResource(id);
OutputStream out=new FileOutputStream(f);
byte buf[]=new byte[1024];
int len;
while((len=inputStream.read(buf))>0)
out.write(buf,0,len);
out.close();
inputStream.close();
}
catch (IOException e){}
}

关于android - 从 drawable 创建一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5895073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com