因此,我获得了大量的图片网址并将其处理到我的blob存储中并将其映射到我的CDN。现在,问题是,有时图像会在原始网址中更新,但网址不会更改。例如:
第一张图片:
Original ImageUrl: "<websiteUrl>/image1.jpg";
My BlobUrl: "<bloburl>/myimage1.jpg";
My CDN Url: "<cdnurl>/myimage1.jpg
更新图片:
orignal imageurl是相同的,所以我无法检查图像网址是否更新。我以为我可以检查exif datetime属性但不幸的是这些图像不是exif中的datetime属性。我在exif中只有的信息是:
File Size 236 kB
File Type JPEG
MIME Type image/jpeg
Image Width 1000
Image Height 1500
Encoding Process Baseline DCT, Huffman coding
Bits Per Sample 8
Color Components 3
X Resolution 72
Y Resolution72
YCbCr Sub Sampling YCbCr4:2:0 (2 2)
我的问题是,在这种情况下,如何检测网址中的图像是否与我的图像中的图像不同。
答案 0 :(得分:1)
在第一个实例中,您应该检查文件本身的LastModified日期,该日期将告诉您自上次访问文件以来该文件是否已实际更改。然后只需重新加载文件,如果它比您存储的日期更新。您还可以检查文件的大小,如果它与它几乎肯定更改之前的大小不同。
但是,如果您无法获得该信息,则唯一的方法是比较图像的像素,看它们是否不同。
但是,您不必逐像素比较。如果在第一次加载图像时从图像生成校验和,并将其与网址一起存储在数据库中。然后,您可以在下次需要显示图像时重复此过程,并将存储的校验和与新计算的校验和进行比较。如果它们不同则图像不同。
这意味着您每次都必须检索图像是否已被更改。
答案 1 :(得分:0)
您应该为文件创建校验和并将其存储在文件中。 然后,您可以轻松计算新的校验和以查看它是否已更改:
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filename))
{
return md5.ComputeHash(stream);
}
}