我有一个sqlite表w / 500条记录,每条记录都存储为blob数据。图像都是大尺寸的,我需要为每个图像制作缩略图版本,然后将它们保存在单独的字段中。
有谁知道接近这项任务的最佳方式是什么?
另一个问题 - 是否建议使用单独的表来存储图像?
提前致谢
答案 0 :(得分:1)
正如Jauzsika所说不要将图像存储在数据库中,无论如何你有图像数据库,你可以遍历所有表并检查哪个列是BLOB,然后只是遍历所有行 - 从单元格获取数据,你有图像(好的,数据 - 但是当你得到数据时很容易创建图像); - )
我知道,我的英语语法很棒。
答案 1 :(得分:1)
最简单的方法是首先执行查询以获取要处理的所有行键,但否 BLOB数据。然后遍历该列表(不在SQL中)并从特定行获取BLOB数据,通过任何方式生成缩略图,然后将其写回行的缩略图列。这可能需要一些时间,但至少你不必担心达到内存限制或其他令人沮丧的废话。当你可以确定没有其他任何东西使用数据库以便你可以避免担心交易时,这是一个好主意,一旦你完成了一次,更新你的行插入/更新代码,以便保留缩略图在处理过程中是最新的,而不是单独的批处理步骤。
至于图像是否应该在DB中,这是一个好的。缩略图很可能应该是,但图像数据本身可能相当大(特别是有更多的行),所以也许应该作为单独的文件存在,只有DB中的文件名。您需要平衡正常处理数据的能力(通过不将所有图像数据放在那里)与保持所有数据保持一致的能力(如果图像数据中出现问题,则很容易出现问题)。我无法真正为您解答,因为它需要更深入的应用程序知识 - 它是您的工作 - 但我希望这能告诉您在做出决定时应该考虑什么。