比较SQL中的图像

时间:2009-04-15 10:20:42

标签: sql stored-procedures

与数据库中的图像进行比较的最佳方法是什么? 我试图比较它们(@Image是图像类型):

Select * from Photos 
where [Photo] = @Image

但收到错误“数据类型图像和图像在等于运算符中不兼容”。

5 个答案:

答案 0 :(得分:9)

由于图像数据类型是用于存储数据的二进制和巨大空间,IMO是比较图像字段的最简单方法是哈希比较。 所以你需要在你的桌子上存储Photo列的哈希值。

答案 1 :(得分:1)

如果需要比较图像,则应从数据库中检索所有图像,并使用用于访问数据库的语言执行此操作。这是将图像或其他二进制文件存储在关系数据库中不是最佳实践的原因之一。每次要将图像存储在数据库中时,都应创建唯一的文件名。使用此唯一文件名重命名文件,将图像存储在磁盘上,并在数据库中插入磁盘上的名称,最后插入文件的原始名称或应用程序用户提供的名称。

答案 2 :(得分:1)

通常,正如已经提到的那样,您需要使用图像处理架中的专用算法。

此外,很难给出准确的答案,因为这个问题太笼统了。根据属性的数量,可以认为两个图像不同或不同。

例如,您可以拥有一张100x100像素的花卉图像和同一朵花的图像,但大小调整为50x50像素。对于某些目的和应用,这两个将被视为相似(无论不同的尺寸),但将出于其他目的将是不同的图像。

您可能想要检查一些工具如何实现图像比较并了解其工作原理:

如果您不想比较图像内容,只需检查两个二进制流(图像文件,其他二进制文件,带图像内容的二进制对象)是否相同,那么您可以比较MD5图像校验和。

答案 3 :(得分:0)

这取决于您想要的准确程度以及需要比较的图像数量。您可以使用DATALENGTH和SUBSTRING或READTEXT等各种函数进行一些比较。或者,您可以在CLR中编写代码并通过存储过程实现它以进行比较。

答案 4 :(得分:0)

比较图像属于计算机科学的特定类别,即图像处理。您应该搜索一些提供图像处理功能的库。使用它可以比较两个图像相同或相同的比率。您可以将2张图像相互匹配,最高可达50%或更多。有数学算法定义比较公式,返回比率。

希望这能为您提供进一步解决问题的方向..