[spip-dev] Gagner du temps à l'upload avec un MD5 de ce qui est déjà sur le serveur

Hello,

Je viens de voir que FaceBook est capable de reconnaître qu'une image a déjà été uploadée et de l'utiliser sans la renvoyer au serveur.

Je suppose que c'est avec un MD5 ou quelque chose comme ça.

Je trouve ça brillant !

Qu'en dites-vous pour SPIP ?
(on reconnait, et soit on fait une liaison, soit une copie)

Tiens on s'était penché un temps sur la question avec rasta pour une demande de jluc.

Il me semble que ça pourrait rester dans un plugin à part car le besoin n'est pas forcément universel : sur des sites de réseaux sociaux comme Fb ça se comprend car les gens téléversent un énorme volume d'images, donc le gain est proportionnel.
En revanche sur un site « lambda » avec une équipe en charge de publier les contenus, des images en doublon ça peut arriver mais ça reste marginal, et donc le gain est sans doute limité.

J'avais un peu cherché les méthodes existantes pour comparer des images, et la technique consiste à prendre une empreinte effectivement. Il y a le md5 de base effectivement, mais aussi pleins d'autres algorithmes.

En se penchant un peu plus sur le sujet ça fait aussi se poser des questions intéressantes : quand est-ce qu'on considère que 2 images sont identiques ?
En fait tout dépend où on place le curseur, par exemple si on prend une image et qu'on opère les changements suivants imperceptibles à l'oeil, est-ce que ça suffit pour considérer que c'est une autre image ?

- changer un pixel
- changer très légèrement la compression
- réduire les dimensions d'un pixel
- changer un unique charactère dans les données exif
- etc.

Au final j'avais retenu cette librairie qui a l'air bien intéressante : https://github.com/jenssegers/imagehash
Elle intègre plusieurs algorithmes et permet de choisir finement le seuil de similitude, en allant d'une similitude absolue (pixels 100% identiques) à une similitude toute relative (en tolérant les watermarks, etc.)

Si on avait poursuivi le projet je serais très certainement parti sur cette lib comme base en tout cas.

Mes 2 sous

Hello,

Par curiosité, quel est ce plugin ? Je ne le vois pas dans git.spip.net...

Ha ?