Сравнивать два изображения без полной загрузки?

1

Я хочу загружать копию большого файла изображения (+ 20 МБ) всякий раз, когда он изменяется. Но не загружая его каждые X секунд и сравнивая его со старой версией, которая у меня есть, как я узнаю, что изображение изменилось или нет? В противном случае это будет очень затратным по полосе пропускания и медленным.

Есть ли способ определить размер картинки перед ее полной загрузкой? Таким образом, когда размер изменился, это означает, что изображение тоже изменилось.

Можем ли мы сравнить два изображения, не загружая их (или просто загрузив первые несколько килобайт)? Другими словами, содержат ли изображения информацию о размере или хэш-значение? Или что-то типа того.

destor
источник
Есть ли у вас контроль над сервером?
lzam
Нет я не Я просто посетитель.
destor
Вы должны связаться с владельцем сервера для некоторой помощи, возможно, вы можете что-то придумать для лучшего решения. Вы должны делать это в любом случае, чтобы не тратить их пропускную способность, обслуживая один и тот же контент снова и снова.
Ramhound
1
сравнение размеров файлов не является точным способом определения, изменились ли данные изображения. Изображение может иметь метаданные, которые изменились, но само изображение не имеет.
Keltari
Вам помог какой-нибудь ответ? Вы хотите установить один в качестве решения?
davidbaumann

Ответы:

1

Wget позволяет загружать только, когда файл на стороне сервера новее:

       When running Wget with -N, with or without -r or -p, the decision
       as to whether or not to download a newer copy of a file depends on
       the local and remote timestamp and size of the file.  -nc may not
       be specified at the same time as -N.
davidbaumann
источник
Вам это помогло? Пожалуйста, отметьте это как решение.
davidbaumann
1

Подход 1: Файловый сервер может разрешить доступ к каталогу. Попробуйте получить доступ, а затем проанализировать вывод родительского каталога. Пример: https://www.kernel.org/pub/site/

Подход 2: В коде найдите поле заголовка «content-length», чтобы получить размер файла, который может быть индикатором того, что файл изменился. Пример: https://stackoverflow.com/questions/2983073/how-to-know-the-size-of-a-file-before-downloading-it/12271781#12271781

Подход 3: Попросите администратора сервера предоставить контрольную сумму, которую вы можете загрузить, уведомление о доступности нового файла или какую-либо другую форму доступа к оболочке / каталогу.

i_am_root
источник
1
А как насчет Etags?
lzam