比较存储在文件系统中的图像的图像类型图像

时间:2016-10-31 18:08:05

标签: c# asp.net sql-server performance sql-server-2012

如果我有以下情况:

存储为文件系统的图像集(JPG)。每个图像的名称都是这样的:

与学生编号连接的标识符

例如:356782377.jpg

我有一个具有以下结构的表:

TransTime       DateTime
Photo           image
Identifier      int
StudentNumber   int

每个Trans都有一个db表中的学生图像和文件系统中的等效图像。 最初表格记录是完整的,除了学号。

EX:

    TransTime             Photo    identifier    student number
2016-08-05 18:39:00       image      35678             ??

我想从文件系统中的图像文件名中提取学生编号(2377)部分,方法是将db中类型(图像)的照片与存储在文件系统中的图像进行比较,并设置该事务的学生编号。 db。

我想将两者(db中的图像和文件系统中的图像)转换为字节并比较它们以使用正确的数字更新null学生。  这是我问题最合适的解决方案吗?

2 个答案:

答案 0 :(得分:2)

通常,当您需要比较两个文件是否相等时,尤其是如果您希望在同一文件上多次执行比较时,最好生成文件的哈希摘要并将其与文件一起存储在数据库。然后,当您需要将新文件与数据库中的文件进行比较时,您可以生成新文件的摘要,并将其与数据库中的文件进行比较。

SHA256摘要使用32个字节。 MD5哈希使用16.由于您不需要加密级别,如果您希望进行大量比较,可以使用MD5。

如果您无法修改数据库架构和/或数据以添加摘要,那么您提出的建议可能是您唯一的选择。

答案 1 :(得分:1)

标识符是否唯一?你真的想要二进制文件比较,还是只想获得给定图像的学号?

如果标识符是唯一的,并且您只需要学生编号(不需要确保二进制文件相同),我只需浏览文件系统上的文件名并根据需要更新数据库。