LINUX.ORG.RU

сравнение двух jpg файлов и отправка на сервак только лишь дельты

 , ,


1

2

доброго дня, клиентское устройство шлет на сервак через определенные промежутки времени фото файлы. возникло желание сделать так, чтобы не каждый раз слать новую фотку а на клиенте как то определить дельту между смежными фото и слать на сервер только дельту и на самом серваке уже получив дельту восстанавливать вторую фотку. как это можно сделать? приложение на си. imagemagick ?

UPD: спасибо откликнувшимся, буду думать о предложенных вариантах.



Последнее исправление: elmir_k (всего исправлений: 1)

При помощи ffmpeg сжимаешь массив фото в видео файл. А потом когда нужно достать определённое фото, при помощи ffmpeg достаёшь кадр.

rezedent12 ☆☆☆
()

Jpeg для этого подходит плохо, потому что кодирование там зависит от содержимого и может быть разным. bmp то что нужно, но оно очень много жрёт само по себе.

Смотри в сторону видео со сжатием. Обрезать ему фреймрейт до кадра в секунду и будет как раз то что тебе нужно.

anonymous
()

Ля:

composite one.jpg two.jpg  -compose mathematics -define compose:args='0,0.5,-0.5,0.5' -quality 100%  diff.jpg

composite one.jpg diff.jpg  -compose mathematics -define compose:args='0,1,-2,1' -quality 100%  two_r.jpg
composite two.jpg diff.jpg  -compose mathematics -define compose:args='0,1,2,-1' -quality 100%  one_r.jpg

Если разницу будешь сохранять в PNG, то восстановленные фотки будут качественнее, но всё равно периодически придётся загружать оригинал, так как со временем ошибка будет накапливаться, если каждый раз считать разницу двух последних кадров. Можешь новенький BPG помучить, разница с джипегом поразительная.

На си через MagickWand так же точно можно. Или можешь свой, более качественный велосипед написать.

anonymous
()
Ответ на: комментарий от anonymous

Jpeg для этого подходит плохо, потому что кодирование там зависит от содержимого и может быть разным. bmp то что нужно, но оно очень много жрёт само по себе.

BMP ненужно. Есть другие форматы без сжатия, некоторые проще. Например farbfeld. При передаче просто жать обычным компрессором типа xz, lzma, или если нужна скорость, lzo каким-нибудь, в крайнем случае gzip

Psych218 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.