如何将图像流转换为GUID

时间:2012-10-03 03:30:02

标签: image-processing

我们从外部来源摄取大量图像。我想确保已经摄取的图像不会在后端重新摄取。为此,我考虑根据图像的流生成GUID,如下所示

File.ReadAllBytes()

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
 MemoryStream ms = new MemoryStream();
 imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
 return  ms.ToArray();
}
enter code here

然后我想把它变成一个CLR(如果有必要的话),然后在SQL Server中保存带有图像元数据的GUID。不确定GUID的唯一性是多么准确。

任何输入?

由于

2 个答案:

答案 0 :(得分:0)

正如@Mark Ransom建议的那样,你会混淆GUID和哈希。 GUID是应该是唯一的标识符。它独立于任何输入,只是您可以生成的东西。对于唯一输入,hash应该是唯一的。换句话说,在绝大多数情况下,相同的输入将具有相同的哈希值。

要使用的常见哈希算法是MD5。这是关于SO的类似问题的link

或者,您可以避免使用现有的命令行实用程序编写代码,例如md5sumsortuniq

答案 1 :(得分:0)

Here's one solution用于“指纹字符串”算法。

正如帖子所说,即使文件格式不同,或者它的大小不同,您通常也希望相同的视觉效果映射到相同的字符串。所以这个算法将图像压缩成一个带有62色调色板的8x8缩略图(你可以用ImageMagick实现相同的功能)。

此转换为您提供64个值的图像,范围从1到62。

换句话说,短基数为62弦。