照片存储的最佳实践
Best practices for photo storage
我想制作一个 Android 具有与 Instagram 相同外观的应用程序,这意味着每个个人资料都有一个照片库。
我的问题是关于存储和检索这些照片。我想知道在数据库 (MySQL) 中存储照片的最佳做法是什么,更准确地说:
- 我应该以原始尺寸(例如 2mb)存储照片还是将其调整为更小的尺寸?
- 我应该将它们存储为两个版本(较小尺寸的照片和正常尺寸的照片)吗?
我认为最好的做法不是将照片存储在数据库中。
在数据库中,您将照片示例 url 的 link/location 存储到照片中。
关于较小尺寸的照片,这取决于您想要实现的目标,因为现在您需要更多 space 来支付费用,而且可能需要更少的带宽,因为您可以放置缩略图并让它仅在用户单击时加载原始尺寸。所以这完全取决于你想要实现什么以及如何实现
存储图像的最佳做法是将它们简单地缓存为文件,而不是将它们保存在数据库中。您可以将它们保存为 sql 数据库中的 blob,但它们应该小于 32px x 32px 以使事情顺利进行。其他一切都应该保存为文件。让我举一个 WhatsApp 的例子。
WhatApp 将大部分图像缓存为文件,仅将像素化缩略图保存在数据库中。
在数据库中保存图像看起来有点过分,没有必要。 保存在磁盘上应该没问题。
虽然 你应该专注于你的业务逻辑 并将其留给图像库来完成这些工作并在内存和性能方面做得最好。
一些著名的库是:
- Picasso
- Glide
- Universal image loader
- Fresco
- &你会发现更多
几乎每个图书馆都会为您做很多事情,例如:
- 在内存缓存中(LRU Cache) - 这样 UI 线程就不会被阻止执行 I/O
从磁盘操作
- 磁盘缓存 - 保存图像以供进一步使用
应用程序会话,当内存缓存达到其限制时,它也必须是
从中逐出。,您可以指定磁盘缓存大小。
- 各种图像缩放策略
- 图像变换
- 正在清理位图以释放内存
- 后台线程上的网络操作
- 后台线程管理和等等..
我的建议是使用其中一个图片库
我想制作一个 Android 具有与 Instagram 相同外观的应用程序,这意味着每个个人资料都有一个照片库。
我的问题是关于存储和检索这些照片。我想知道在数据库 (MySQL) 中存储照片的最佳做法是什么,更准确地说:
- 我应该以原始尺寸(例如 2mb)存储照片还是将其调整为更小的尺寸?
- 我应该将它们存储为两个版本(较小尺寸的照片和正常尺寸的照片)吗?
我认为最好的做法不是将照片存储在数据库中。 在数据库中,您将照片示例 url 的 link/location 存储到照片中。 关于较小尺寸的照片,这取决于您想要实现的目标,因为现在您需要更多 space 来支付费用,而且可能需要更少的带宽,因为您可以放置缩略图并让它仅在用户单击时加载原始尺寸。所以这完全取决于你想要实现什么以及如何实现
存储图像的最佳做法是将它们简单地缓存为文件,而不是将它们保存在数据库中。您可以将它们保存为 sql 数据库中的 blob,但它们应该小于 32px x 32px 以使事情顺利进行。其他一切都应该保存为文件。让我举一个 WhatsApp 的例子。 WhatApp 将大部分图像缓存为文件,仅将像素化缩略图保存在数据库中。
在数据库中保存图像看起来有点过分,没有必要。 保存在磁盘上应该没问题。
虽然 你应该专注于你的业务逻辑 并将其留给图像库来完成这些工作并在内存和性能方面做得最好。
一些著名的库是:
- Picasso
- Glide
- Universal image loader
- Fresco
- &你会发现更多
几乎每个图书馆都会为您做很多事情,例如:
- 在内存缓存中(LRU Cache) - 这样 UI 线程就不会被阻止执行 I/O 从磁盘操作
- 磁盘缓存 - 保存图像以供进一步使用 应用程序会话,当内存缓存达到其限制时,它也必须是 从中逐出。,您可以指定磁盘缓存大小。
- 各种图像缩放策略
- 图像变换
- 正在清理位图以释放内存
- 后台线程上的网络操作
- 后台线程管理和等等..
我的建议是使用其中一个图片库