簡體   English   中英

我如何理解URL中的圖像是否已更改?

[英]How can I understand if Image from URL has been changed?

因此,我得到了很多圖像URL,並將它們處理到我的Blob存儲中,並將其映射到CDN。 現在的問題是,有時圖像會以原始網址進行更新,但網址沒有更改。 例如:

對於第一張圖片:

Original ImageUrl: "<websiteUrl>/image1.jpg";
My BlobUrl: "<bloburl>/myimage1.jpg";
My CDN Url: "<cdnurl>/myimage1.jpg

對於更新圖像:

原始圖片網址相同,因此我無法檢查圖片網址是否已更新。 我以為我可以檢查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)

我的問題是,在這種情況下,如何檢測來自url的圖像是否與我的blob中的圖像不同。

在第一種情況下,您應該檢查文件本身的LastModified日期,這將告訴您自上次訪問文件以來文件是否實際上已更改。 然后,如果文件比您存儲的日期新,則只需重新加載它即可。 您還可以檢查文件的大小(如果它與幾乎可以肯定的更改之前的大小不同)。

但是,如果您無法獲得該信息,則唯一的方法是比較圖像的像素以查看它們是否不同。

但是,您不必進行逐像素比較。 如果您在第一次加載圖像時從圖像中生成校驗和,並將其與URL一起存儲在數據庫中。 然后,當您下次需要顯示圖像並將存儲的校驗和與新計算的校驗和進行比較時,可以重復該過程。 如果它們不同,則圖像也不同。

這確實意味着,無論是否更改了圖像,您都必須每次檢索圖像。

您應該為文件創建一個校驗和並將其存儲在其中。 然后,您可以輕松地計算新的校驗和以查看其是否已更改:

using (var md5 = MD5.Create())
{
    using (var stream = File.OpenRead(filename))
    {
        return md5.ComputeHash(stream);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM