2011-06-13 47 views
2

我有一個應用程序將產品照片並將其保存回服務器。現在發送大文件和轉換格式等是很昂貴的。所以我想知道如何檢查先前上傳的照片是否相同?如果它們具有相同的分辨率,它們具有相同的字節數是多少?還有什麼是通過HTTP上傳照片最有效的方式?應該是壓縮等謝謝具有相同字節數的兩張照片(大)的賠率是多少?

+0

你是什麼意思的「相同」?你可以有兩張完全不同位圖案的圖片,當它們呈現給人類時(特別是如果它是一種壓縮格式的話)時,它們看起來完全一樣。 – 2011-06-13 04:41:19

+0

@abelenky OP從未投過票。也許他/她不知道SO的工作原理 – 2011-06-13 13:02:18

回答

5

而不是依賴於兩個圖像的字節大小,你可以創建這些圖像MD5 hashes(或其他散列算法)並比較散列值。哈希碰撞比圖像大小比較要少得多。

如果圖像可以被顯着壓縮,那麼您只應該打擾壓縮。否則,你真的只是在客戶端和服務器上浪費CPU。

0

'相同尺寸'對於相同的圖片來說是必要的,但不是充分的要求。你必須真正看看字節的內容。 md5sum是驗證平等的指紋選項。

正如Paul Sasi所提到的,壓縮不會有太大幫助,因爲大多數使用的文件格式(PNG,JPG等)已經過壓縮和優化,儘可能少使用內存。

還有另一個選擇來限制上傳大小:在大多數情況下,客戶端將圖像上傳格式的服務器分辨率過高(例如,他們直接從數碼相機中獲取文件,這意味着不能打印在線消費)。這通常會以大於2MB的圖片結束。一個很大的優化就是在客戶端調整圖片的大小(比如4MB到200KB)。不幸的是我忘記了圖書館的名字(當我再次想到時,我會添加它)。

相關問題