Reactjs React(本机)图像存储/获取良好实践
我的用例是一个带有react native的移动应用程序,但我想这是非常常见的好做法 我希望能够在应用程序中(从相机或图库)拍摄图像,并能够存储图像,以便从添加日期或用户添加的某些元数据中提取图像 理论似乎很简单,一种方法是:Reactjs React(本机)图像存储/获取良好实践,reactjs,image,react-native,realm,Reactjs,Image,React Native,Realm,我的用例是一个带有react native的移动应用程序,但我想这是非常常见的好做法 我希望能够在应用程序中(从相机或图库)拍摄图像,并能够存储图像,以便从添加日期或用户添加的某些元数据中提取图像 理论似乎很简单,一种方法是: 使用任何库(例如)获取图像 将图像存储为base64,并将元数据存储在,比如说(一些内部数据库) 查询此数据库以获取我想要的内容 这应该是可行的,而且应该很容易实现。 但我想知道一些事情: 根据智能手机摄像头的性能,将其存储为base64(并且没有校验和,占用更多内
- 使用任何库(例如)获取图像
- 将图像存储为base64,并将元数据存储在,比如说(一些内部数据库)
- 查询此数据库以获取我想要的内容
- 根据智能手机摄像头的性能,将其存储为base64(并且没有校验和,占用更多内存,…)不是很丢脸吗
- 这种格式,base64,通常用于存储图像不是一个坏主意吗
- 将图像存储在RealmJS中是否是一个好主意,因为重复使用图像(在facebook上共享)会让用户感到痛苦,但另一方面,如果我将其写入智能手机并存储URI,可能会导致很多问题(如果用户删除它,则会丢失文件,需要访问内存,…)
- 这种方法是“干净”的吗(好的,它可以工作,但是
const ImageSchema = {
name: 'Image',
properties: {
path: 'string',
created: 'Date',
modified: 'Date?',
tags: 'Tag[]'
}
};
const TagSchema = {
name: 'Tag',
properties: {
name: 'string',
images: { type: 'linkingObjects', objectType: 'Image', property: 'tags' }
}
};
也就是说,对于每个图像,存储其创建的时间戳。此外,如果图像已被修改,则它具有可选的时间戳。属性path
是查找图像的位置。如果希望存储图像,可以使用data
类型的属性。要查找少于一周的图像,可以使用realm.objects('image').filtered('created>=$1',newdate(Date.now()-7*24*60*60))
为了好玩,我为每个图像添加了一个标签列表。
标记中的linkingObject
可以找到所有具有特定标记的图像,例如,realm.objects('Tag')。过滤('@links.Tag.name==“Dog”)
是的,我会这样做,事实上我已经创建了我的模式,似乎存储了一个URI数组(字符串)这是一种最健壮的方法,可以在领域中不添加太多内容。感谢链接对象的提示!它打开了许多问题的大门(比如用户通过其他应用删除图像等),但在我的使用案例中,它似乎是可以接受的。