假设我有这个工具每10秒钟截取用户桌面的截图并将图像上传到服务器。 24小时后将从服务器中删除图像。我想允许用户在他们的浏览器中查看这些屏幕截图。因此,假设每个图像都是300K,并且在24小时内上传了5000个图像 - 这是1.5 GB的数据。这些是png图像,通常一个屏幕截图与前一个屏幕截图没有什么不同,所以我想我可以很好地压缩它们 - 但我不确定它是如何工作的。我想允许用户在他们的浏览器中查看这些图像。我想在图像下面有一个滑块,这样用户就可以跳到24小时内的任何一点。我想像YouTube播放器这样的东西是理想的。用户可以跳转并且数据流式传输等。图像质量很重要,因为用户需要能够读取屏幕截图中的文本。我更喜欢Python解决方案。
我之前从未做过这样的事情,也不确定如何处理这个问题。你会做什么?
答案 0 :(得分:5)
快速&简单的解决方案就是
从一个屏幕到另一个屏幕,非常相似,只需要加载几个图块,所以这就是你的压缩。
实施简单的引用计数方案再次删除图块。您甚至可能希望在用户之间共享屏幕部分以进一步减少存储空间。
尝试各种瓷砖尺寸,找出哪种效果最佳;这可能取决于屏幕分辨率,用户活动和用于存储元素的图形格式。
Python中的图像处理可以使用PIL完成。
答案 1 :(得分:1)
如果用户当前位于图像K并且想要加载图像H,假设屏幕截图大致相同,则可以在H和K之间发送delta diff。
您可以提前计算差异并将其存储到缓存或数据库中以便更快地访问(但会有大量数据),或者您可以动态计算它。