【问题标题】:Retrieving and Storing images in SQLite in ios在 ios 中的 SQLite 中检索和存储图像
【发布时间】:2015-12-06 01:01:44
【问题描述】:

我们如何在 ios 应用程序的 sqlite 中创建一个按钮来存储和检索图像? 实际上我正在构建一个应用程序,我可以在其中从相机拍照,我必须将其存储并显示为个人资料图片

【问题讨论】:

标签: ios objective-c image sqlite


【解决方案1】:

如果要存储大量图像,将图像数据存储在数据库中是不合适的方法。它将挂起 UI。

您可以在文档目录中创建一个文件夹并将图像放在那里。因此,您只会每次都从那里获取图像。

在数据库中,存储文件路径并从该文件路径获取图像。

请务必从文档目录中删除图像,一旦它变得不可用,即用户更改个人资料图片。否则,它会不断增加您的应用程序的内存。

【讨论】:

【解决方案2】:

最好将图像存储在您的文档目录的文件路径中,并将文件路径存储在 sqlite 中以便更快地访问图像。

制作如下文件路径:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory 
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"image.png"]; //Add the file name
[pngData writeToFile:filePath atomically:YES]; //Write the file

现在文件路径字符串将插入到您的 sqlite 数据库中。

现在,当您访问图像时,您将从 sqlite 获取文件路径并从中获取图像数据,如下所示:

NSData *pngData = [NSData dataWithContentsOfFile:filePath];
UIImage *image = [UIImage imageWithData:pngData];

【讨论】:

  • 为什么更好?这是 SQLite 的完美用例,可以发挥其优势。
  • @StevenFisher 不过,这并不是存储它们的最有效方式。数据库并不意味着以图像格式存储信息。因此,简短的稍微简化的答案是开销过多的性能噩梦。
  • 这几乎不是一场性能噩梦,而且相当高效。事实上,这是 SQLite 的声明用例之一。不要误会我的意思,对于任何其他数据库,您都是绝对正确的。但 SQLite 更像是 fopen 的替代品,而不是传统数据库。
猜你喜欢
  • 2015-08-01
  • 1970-01-01
  • 2015-11-21
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 2014-10-19
  • 2015-03-16
相关资源
最近更新 更多