gpt4 book ai didi

Android读写临时文件

转载 作者:太空狗 更新时间:2023-10-29 14:30:17 27 4
gpt4 key购买 nike

您好,我创建了这个方法来执行以下操作:

-它需要一个位图

-创建临时文件

-压缩位图并将其放入临时文件

-打开临时文件

-read bytes >>>问题出在我的代码中

-将这些字节保存在sqlite db中

-从 sqlite 数据库中检索字节

-再次将这些字节设置为图像位图

我知道我知道完全没用,但这是我发现做我想达到的目标的唯一方法:

-压缩位图

-保存到sqlite数据库

所以这是代码。程序在 in.read(bb) 处崩溃:

private void updateBitmapData() {
File file = null;

FileOutputStream stream = null;

try {
file = File.createTempFile("image", null, getBaseContext().getFilesDir());
stream = new FileOutputStream(file);
System.out.println(thumbnail.getRowBytes());
thumbnail.compress(Bitmap.CompressFormat.JPEG, 50, stream);

stream.close();

FileInputStream in=new FileInputStream(file);

byte[] bb = null;
in.read(bb); //crash
in.close();
System.out.println("despues compression"+bb.length);

DBAdapter db=new DBAdapter(getApplicationContext());
db.insertData(bb);
Cursor c=db.getLastImage();
if(c.moveToFirst()){
bb=c.getBlob(0);
}
c.close();
db.close();
im.setImageBitmap(BitmapFactory.decodeByteArray(bb, 0, bb.length));

} catch (FileNotFoundException e) {
e.printStackTrace();
Log.e("NuevaIncidencia", e.getLocalizedMessage());
im.setImageBitmap(thumbnail);
}catch (IOException e1) {
Log.e("NuevaIncidencia", e1.getLocalizedMessage());
e1.printStackTrace();
im.setImageBitmap(thumbnail);
} catch (Exception e2){
e2.printStackTrace();
//Log.e("NuevaIncidencia", e2.getLocalizedMessage());
}

}

我该如何解决这个问题?谢谢

最佳答案

我猜你有一个 NullPointerException,这似乎是正常的,因为当你调用 read 时你的缓冲区是空的。

您必须实例化具有预期大小的缓冲区。

尝试以这种方式初始化字节数组:

byte[] bb = new byte[file.length()];

希望对你有帮助

乔卡英雄

关于Android读写临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7483157/

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