Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将图像保存到文件室持久性库_Java_Android_Sqlite_Android Room_Android Image - Fatal编程技术网

Java 如何将图像保存到文件室持久性库

Java 如何将图像保存到文件室持久性库,java,android,sqlite,android-room,android-image,Java,Android,Sqlite,Android Room,Android Image,最初我是在卡片视图中添加信息(字符串)和照片(来自drawable)。我让它从一个列表中工作,并使用适配器等将其添加到回收器视图中的卡中。现在,我正试图迁移到使用Room Persistence库保存这些信息,而不是在代码中添加虚拟信息,我将使其来自用户输入,因为我正在尝试实现这一点,我发现将图像保存到Room DB并不太容易。字符串现在工作正常,我只需要一种方法来保存从相机拍摄后的图像 我无法使用类型Image、Bitmap、URI和Drawables在房间数据库中存储图像 @实体(table

最初我是在卡片视图中添加信息(字符串)和照片(来自drawable)。我让它从一个列表中工作,并使用适配器等将其添加到回收器视图中的卡中。现在,我正试图迁移到使用Room Persistence库保存这些信息,而不是在代码中添加虚拟信息,我将使其来自用户输入,因为我正在尝试实现这一点,我发现将图像保存到Room DB并不太容易。字符串现在工作正常,我只需要一种方法来保存从相机拍摄后的图像

我无法使用类型Image、Bitmap、URI和Drawables在房间数据库中存储图像

@实体(tableName=“machines\u table”)
公共类机器{
@PrimaryKey(自动生成=真)
私有int-id;
私人可抽式照片;
私有字符串名称;
私有字符串位置;
公共计算机(字符串名称、字符串位置、可绘制照片ID){
this.name=名称;
这个位置=位置;
this.photoId=photoId;
}
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共字符串getName(){
返回名称;
}
公共字符串getLocation(){
返回位置;
}
公共可绘制getPhotoId(){
返回光ID;
}
}
我想我希望能够更容易地保存图像,但是当使用上面列出的任何类型时,情况并非如此,我遇到了这个错误


“错误:无法确定如何将此字段保存到数据库中。您可以考虑为其添加类型转换器。”

您可能会将它们保存为<代码>字节[]/COD>,但是将位图保存到数据库中通常被认为是不明智的。将它们存储到文件系统中,并将文件名(例如基于UUID的文件名)保存到数据库中。然后在需要时检索文件


如果数据库本身存储图像,则数据库将变得庞大而缓慢。

您不能存储纯图像,可以使用许多选项来存储图像:

  • 将映像转换为base64并存储在数据库中
  • 保存在本地存储器中,并将Uri存储在数据库中
  • 从服务器获取图像URL并将URL存储在数据库中

  • 如果我希望每个帐户都能保存这些信息,您认为哪一个选项最有效?最终,我计划在某个时候实现这一点,这样我就可以通过在多个设备上登录来获取这些信息。将它们保存在本地是否可以通过Android的自动备份来实现这一点?我对所有这一切都很陌生,他们在我的大学里开设了一门关于移动开发的课程,我在上个学期被列入了等待名单。然而,即使是和拿走它的朋友交谈,他们也不知道我在做什么。在我继续研究的过程中,没有其他人可以询问。如果从服务器获取信息,我的建议使用第三个选项,从服务器获取图像URL,并将URL存储在数据库中,然后使用glide或毕加索等加载图像,每个帐户保存URL我使用毕加索和glide时考虑过,我使用的卡片是在创建“机器”页面中根据用户输入创建的,我将从图库中提取照片或从相机中拍摄照片。所以你的意思是,我需要将它上传到一个与数据库分离的服务器上,并将该url保存在数据库中。这是AWS或GCP的用途吗?还是我必须自己主持?如果可能的话,我当时不想做的事情。在Android上实现它时,最好使用哪个平台?假设GCP,但我不完全确定它是否可以做到这一点OK,您不能将原始图像保存在数据库中以便稍后发送到服务器,必须在用户选择或拍照后立即将图像发送到服务器。因此,在服务器中上传图像后获得成功结果更新用户信息以显示用户头像,在此步骤中,您可以保存图像URL将其保存到文件系统我是否能够实现帐户登录,最终使图像和其他信息显示在其他设备上?这会属于自动备份吗?或者只是将其保存到设备中,而没有设备间同步的选项