Ajouter un logo en bas (nadir) des photos à 360°

Je viens de tester l’ajout d’un logo en bas des photos 360°… et ça rend pas mal du tout !

Capture d’écran du 2023-07-29 18-11-25

La recette magique:

  1. convertir le logo (qui doit être une image carrée) en version “equirectangulaire” avec imagemagick
  2. remplacer le bas de l’image (bien sûr en lossless pour le reste de l’image) avec jpegtran

Pour une image de GoproMax (dimensions de 5760x2880) ça donne:

convert panoramax-logo.png -rotate 180 -distort DePolar 0 -flip -flop -geometry 5760x576! -sampling-factor 2x1 nadir-5760.jpg

puis ensuite sur chaque image:

jpegtran -copy all -optimize -progressive -trim -drop +0+2304 nadir-5760.jpg original.jpg > nouvelle.jpg

2 Likes

ça pourra être fait à terme par le CLI ou le backend ?

Oui, assez facilement, il y avait déjà eu des demandes pour ça, mais plutôt de la part des collectivités qui aimeraient avoir leur logo…

La question est: est-ce que ca diminue le poids de l’image ? Par rapport à une dégradation légère de l’image comme tu avais testé.
Ca ne pourrait être valable que sur les images où la partie sans intérêt est importante (toit de voiture), mais il est dans l’intérêt de tous de limiter cette partie au max. Dans ce cas, je ne comprends pas l’intérêt si cette partie est infime

Ma photo de test est passée de 3.3Mo à 2.9Mo :slight_smile:

Je me suis inspiré de :

1 Like

Tiens tiens c’est intéressant ça, je me demandais justement comment faire. Je vais voir si je peux faire ça avec les images 360 du SDIS34.

Je viens d’essayer la manip sous Windows. J’arrive bien à exécuter les deux commandes, moyennant une adaptation sur la 2ème :
.\jpegtran -copy all -optimize -progressive -trim -drop +0+2304 nadir-5760.jpg original.jpg nouvelle.jpg
Par contre je trouve que l’image incrustée est trop grosse et j’aimerai diminuer sa taille dans l’image 360. Mais je n’arrive pas à trouver quel est le paramètre dans la première commande qui gère ça. J’ai testé en changeant geometry et sampling-factor ou même en diminuant la taille de mon logo. Mais ça ne change pas la taille finale dans la 360. Tout autre valeur que 2x1 dans le sampling-factor fait même planter la 2ème commande. Bref je ne pige pas trop comment faire.

Pour que l’incrustation soit plus petite, il faut diminuer la hauteur de celle-ci.

Dans mon exemple elle est de 576 pixels de haut sur les 2880 au total ça fait 20% et donc on la place à 2880-576 pixels soit 2304.

Si tu veux passer à 15%, ça fait 432 pixels de haut et un placement à 2880-432=2448

Ce qui donne en principe (pas testé):

convert panoramax-logo.png -rotate 180 -distort DePolar 0 -flip -flop -geometry 5760x432! -sampling-factor 2x1 nadir-5760.jpg


jpegtran -copy all -optimize -progressive -trim -drop +0+2448 nadir-5760.jpg original.jpg > nouvelle.jpg

Ah ok. Je me suis pas mal pris la tête pour comprendre les liens entre les valeurs numériques des commandes. Je comprends mieux maintenant. Merci Christian, je vais tester de ce pas !
Un truc que je ne saisis pas c’est où tu indiques le nom de ton image à incruster dans ta 2ème commande. Sur la version Windows de jpegtran, je dois obligatoirement ajouter nadir-5760.jpg sinon j’ai une erreur.

On dirait les pages ad sur les sites internet dont tu ne sais pas te débarrasser. :rofl:

Oui, erreur de ma part… corrigée dans les exemples ci-dessus !

Désolé

Et voilà le résultat. Avec en prime l’incrustation de la référence de la piste DFCI concernée ! On va préparer les images avec le jeu de panneaux pour l’ensemble de nos pistes.


Sinon une remarque pour ceux qui voudraient faire les mêmes manips. Il faut absolument que votre image d’origine soit carrée pour que ça fonctionne bien. Au début j’avais fait juste avec le logo Hérault Sapeurs-pompiers qui est très étiré horizontalement. Avec la commande convert si c’est trop étiré ça coupe une grosse partie du logo !

4 Likes

Et le résultat final sur panoramax :
https://panoramax.ign.fr/#background=streets&focus=pic&map=19/43.4066147/3.1073113&pic=2ffcc141-beb1-41f4-9c21-63ca1cad9a20&speed=250&xyz=1.81/-74.95/0
Finalement avec un fond noir pour le patch, ça le fait mieux !
L’inscrustation de la référence de la piste DFCI est également automatisée à partir d’une image avec un panneau vide avec une commande convert :
convert -font "Cambria-Bold" -fill "#1d1d1b" -gravity center -pointsize 200 -draw "text 10,490 'AVC7'" patch_DFCI_vierge.png patch_DFCI.png
Et si ce n’est pas une piste DFCI je mettrais juste le logo du SDIS34 centré.

4 Likes

L’incrustation de la ref de la piste DFCI dans une partie non exploitable, c’est énorme. Y aurait presque plus qu’à automatiser le truc à partir de la recherche de la photo et du nom sur BDTopo ou OSM ou referentiel interne.

Là j’ai fait un script Powershell sous Windows (just because mes collègues sont sous Windows… tu imagines bien). Hé oui je me mets à faire du script sous Windows, décidément je tourne mal en vieillissant ! :scream:

Il suffit de nommer le répertoire des photos DFCI_AVC7, lancer le script et ça te génère un répertoire DFCI_AVC7_patchees avec marqué AVC7 sur le patch de toutes les photos. Et au passage j’ajoute aussi les tags qui vont bien avec exiftool pour indiquer que c’est de la précision en GPS différentiel dans les métadonnées des photos. Et si il n’y a pas DFCI dans le nom du répertoire ça te met le logo du SDIS34 centré seul sans le panneau DFCI.

2 Likes

Quel est le temps de traitement ?
Car j’avais testé des solutions en python et c’était assez long et couteux en ressources.

C’est en principe relativement rapide quand on utilise jpegtran pour modifier l’image JPEG sans la décompress/recompresser (et donc en conservant la qualité initiale “pixel perfect”).