Un outil HTML/JS entiĂšrement local qui transforme n'importe quelle image de ta galerie en une photo d'apparence authentique â avec mĂ©tadonnĂ©es EXIF complĂštes, bruit de capteur, vignette, et nom de fichier au format Samsung Camera.
- Principe
- Prérequis
- Installation & lancement
- Utilisation pas Ă pas
- Ce que contient la photo générée
- Téléphones supportés
- Limitations connues
- FAQ
Quand tu prends une photo avec ton tĂ©lĂ©phone, le fichier JPEG contient bien plus que l'image : des mĂ©tadonnĂ©es EXIF (marque, modĂšle, ISO, vitesse d'obturation, distance focale, GPS, dateâŠ) qui permettent Ă n'importe quelle application de galerie de savoir exactement dans quelles conditions la photo a Ă©tĂ© prise.
Une capture d'écran ou une image téléchargée n'a aucune de ces métadonnées. RE-PHOTO injecte des EXIF réalistes correspondant à ton téléphone détecté, ajoute du grain de capteur et une vignette, et génÚre le fichier avec le bon nom de fichier (ex: 20260301_143022.jpg).
Tout se passe 100% localement dans le navigateur. Rien n'est envoyé sur internet.
- Un navigateur moderne (Chrome, Firefox, Samsung Internet, Safari)
- Node.js installé si tu veux utiliser la caméra en live (pour le serveur local)
- Sur Android : Termux ou tout terminal avec
npxdisponible
Tu peux ouvrir directement le fichier HTML dans ton navigateur via le gestionnaire de fichiers. La caméra ne fonctionnera pas (les navigateurs bloquent getUserMedia sur file://) mais tout le reste fonctionne parfaitement : chargement de la photo, injection EXIF, téléchargement.
- Copie
rephotograph.htmldans ton stockage interne - Ouvre-le avec Chrome ou Samsung Internet
- SĂ©lectionne ta photo â appuie sur le shutter â tĂ©lĂ©charge
La caméra nécessite HTTPS ou localhost. La façon la plus simple :
Avec Termux sur Android :
# Installer Node.js si pas encore fait
pkg install nodejs
# Lancer un serveur local dans le dossier contenant le fichier
npx serve /storage/emulated/0/Download/Puis ouvrir dans Chrome :
http://localhost:3000/rephotograph.html
Sur Mac :
npx serve /chemin/vers/dossier/Ouvrir http://localhost:3000/rephotograph.html
Sur Linux :
# Option 1 â avec Node.js
npx serve ~/Téléchargements/
# Option 2 â avec Python (souvent dĂ©jĂ installĂ©)
cd ~/Téléchargements && python3 -m http.server 3000
# Option 3 â avec PHP (si installĂ©)
cd ~/Téléchargements && php -S localhost:3000Ouvrir dans Chrome ou Firefox : http://localhost:3000/rephotograph.html
Node.js pas installé sur Linux ?
sudo apt install nodejs npm(Debian/Ubuntu) ·sudo dnf install nodejs(Fedora) ·sudo pacman -S nodejs npm(Arch)
Sur Windows :
# Option 1 â avec Node.js (PowerShell ou invite de commandes)
npx serve C:\Users\TonNom\Downloads\
# Option 2 â avec Python
cd C:\Users\TonNom\Downloads
python -m http.server 3000
# Option 3 â avec PHP
cd C:\Users\TonNom\Downloads
php -S localhost:3000Ouvrir dans Chrome ou Edge : http://localhost:3000/rephotograph.html
Astuce Windows : Maintiens
Shift+ clic droit sur le dossier â "Ouvrir la fenĂȘtre PowerShell ici" pour ouvrir directement au bon endroit.
Node.js pas installé sur Windows ? Télécharge la version LTS sur nodejs.org. Python est disponible sur python.org ou via
winget install Python.Python.3.
La premiĂšre fois,
npx servedemandera à télécharger le packageserve. Répondsy.
Sur l'Ă©cran d'accueil, appuie sur â Choisir une photo.
- Le sélecteur de fichiers s'ouvre sur ta galerie
- SĂ©lectionne n'importe quelle image (JPEG, PNG, WebPâŠ)
- L'image s'affiche dans le viewfinder
En arriĂšre-plan, le site :
- Détecte automatiquement ton téléphone via le User-Agent
- Tente d'obtenir ta gĂ©olocalisation GPS (une fenĂȘtre de permission peut apparaĂźtre â accepte pour avoir les coords GPS dans les EXIF)
Si tu as lancĂ© via un serveur local (Option 2), appuie sur đ· CamĂ©ra.
- Le navigateur demandera la permission d'accĂ©der Ă la camĂ©ra â Autoriser
- Le flux de la caméra arriÚre apparaßt en superposition semi-transparente sur ta photo
- Cela donne l'illusion visuelle que tu es en train de photographier quelque chose devant toi
- Appuie Ă nouveau sur âč Stop pour dĂ©sactiver la camĂ©ra
Si la caméra ne fonctionne pas, un message d'erreur rouge apparaßt en bas de l'écran avec l'explication précise (permission refusée, protocole non sécurisé, etc.). Tu peux continuer sans la caméra.
Appuie sur le grand bouton rond (shutter) au centre.
- Un flash blanc illumine l'écran
- Une ligne de scan traverse le viewfinder
- La photo est capturée, le grain de capteur et la vignette sont appliqués
- Les EXIF sont injectés
L'écran de résultat affiche :
- L'aperçu de la photo générée
- Les métadonnées injectées : modÚle, f/, ISO, vitesse, focale 35mm, GPS si disponible
- Deux boutons :
- â TĂ©lĂ©charger â sauvegarde le fichier JPEG avec le nom
YYYYMMDD_HHmmss.jpg - â Recommencer â retourne au viewfinder pour reprendre
- â TĂ©lĂ©charger â sauvegarde le fichier JPEG avec le nom
Le fichier est téléchargé dans ton dossier Téléchargements. Pour qu'il apparaisse dans ta galerie comme une vraie photo :
Sur Android, déplace-le manuellement :
/storage/emulated/0/Téléchargements/20260301_143022.jpg
â
/storage/emulated/0/DCIM/Camera/20260301_143022.jpg
Via Termux :
mv /storage/emulated/0/Download/20260301_*.jpg /storage/emulated/0/DCIM/Camera/Puis force la mise Ă jour de la galerie :
am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE \
-d file:///storage/emulated/0/DCIM/Camera/20260301_143022.jpgSur Windows, si tu utilises l'outil depuis un PC et veux transférer la photo sur ton téléphone Android :
# Via cùble USB (MTP activé sur le téléphone)
# Copie dans l'Explorateur Windows vers :
# Ce PC > Galaxy S20 FE > Stockage interne > DCIM > Camera
# Ou via ADB si installé
adb push C:\Users\TonNom\Downloads\20260301_143022.jpg /sdcard/DCIM/Camera/
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE ^
-d file:///sdcard/DCIM/Camera/20260301_143022.jpgADB (Android Debug Bridge) est inclus dans les Android Platform Tools. Télécharge-les, extrais l'archive, et exécute
adbdepuis le dossier extrait. Le dĂ©bogage USB doit ĂȘtre activĂ© sur le tĂ©lĂ©phone (ParamĂštres â Options dĂ©veloppeur â DĂ©bogage USB).
Sur Linux, mĂȘme chose si transfert vers un tĂ©lĂ©phone Android :
# Via ADB (installer avec : sudo apt install adb)
adb push ~/Téléchargements/20260301_143022.jpg /sdcard/DCIM/Camera/
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE \
-d file:///sdcard/DCIM/Camera/20260301_143022.jpg
# Ou via MTP avec go-mtpfs / simple-mtpfs
simple-mtpfs --device 1 /mnt/android
cp ~/Téléchargements/20260301_143022.jpg /mnt/android/DCIM/Camera/
fusermount -u /mnt/android| Champ EXIF | Exemple (SM-G781W) | Description |
|---|---|---|
Make |
samsung |
Marque du fabricant |
Model |
SM-G781W |
ModÚle exact détecté |
Software |
G781WVLU9GXC1 |
Version firmware |
DateTime |
2026:03:01 14:30:22 |
Date et heure de la prise |
DateTimeOriginal |
identique | Date originale |
ExposureTime |
1/30 |
Vitesse d'obturation |
FNumber |
1.8 |
Ouverture |
ISOSpeedRatings |
320 |
Sensibilité ISO |
FocalLength |
4.70 mm |
Distance focale physique |
FocalLengthIn35mmFilm |
26 |
Ăquivalent 35mm |
PixelXDimension |
3024 |
Largeur en pixels |
PixelYDimension |
4032 |
Hauteur en pixels |
MeteringMode |
5 (multi-zones) |
Mode de mesure |
WhiteBalance |
0 (auto) |
Balance des blancs |
GPSLatitude |
48.8566 |
Latitude (si accordée) |
GPSLongitude |
2.3522 |
Longitude (si accordée) |
ColorSpace |
1 (sRGB) |
Espace colorimétrique |
XResolution / YResolution |
72 |
Résolution DPI |
- Bruit de capteur : bruit aléatoire pixel par pixel simulant le grain d'un vrai capteur photographique (intensité calibrée à 14/255)
- Vignette : assombrissement progressif des bords via un dégradé radial, identique à ce que produisent les objectifs de smartphones
- RĂ©solution native : l'image est redimensionnĂ©e Ă la rĂ©solution exacte du tĂ©lĂ©phone dĂ©tectĂ© (ex: 3024Ă4032 pour le SM-G781W)
Format Samsung Camera : YYYYMMDD_HHmmss.jpg
Exemple : 20260301_143022.jpg pour le 1er mars 2026 Ă 14h30:22.
La détection se fait automatiquement via le User-Agent du navigateur.
| ModÚle | Make | ISO | Focale | Résolution |
|---|---|---|---|---|
| Samsung SM-G781W (Galaxy S20 FE) | samsung | 320 | 26mm | 3024Ă4032 |
| Samsung SM-S928B (Galaxy S24 Ultra) | samsung | 50 | 24mm | 4080Ă3060 |
| Samsung SM-S918B (Galaxy S23 Ultra) | samsung | 64 | 23mm | 4080Ă3060 |
| Samsung SM-S911B (Galaxy S23) | samsung | 64 | 23mm | 4080Ă3060 |
| Samsung SM-A546B (Galaxy A54) | samsung | 100 | 26mm | 4080Ă3060 |
| Samsung SM-A145F (Galaxy A14) | samsung | 125 | 26mm | 3264Ă2448 |
| iPhone 15 Pro | Apple | 48 | 24mm | 4032Ă3024 |
| iPhone 14 Pro | Apple | 64 | 24mm | 4032Ă3024 |
| iPhone 13 | Apple | 100 | 26mm | 4032Ă3024 |
| Google Pixel 8 Pro | 56 | 24mm | 4080Ă3072 | |
| Google Pixel 7 | 80 | 25mm | 4080Ă3072 | |
| OnePlus CPH2447 | OnePlus | 64 | 23mm | 4080Ă3060 |
| Xiaomi 23116PN5BC | Xiaomi | 50 | 23mm | 4080Ă3060 |
Si ton téléphone n'est pas dans la liste, le profil SM-G781W est utilisé par défaut.
Taille du fichier : Le canvas HTML gĂ©nĂšre un JPEG depuis des donnĂ©es pixels â la taille finale (environ 1,5â3 Mo) peut diffĂ©rer lĂ©gĂšrement d'une photo native qui applique des algorithmes de compression propriĂ©taires.
Profondeur de couleur : Le canvas travaille en 8 bits par canal. Certains smartphones modernes capturent en 10 bits (HDR). Cette différence ne sera pas reproduite.
GPS : La géolocalisation du navigateur est moins précise que le GPS matériel d'un téléphone. Si l'utilisateur refuse la permission, les champs GPS ne sont pas injectés.
Caméra sur file:// : getUserMedia est bloqué par tous les navigateurs modernes quand le fichier est ouvert directement depuis le systÚme de fichiers. Il faut obligatoirement passer par un serveur local (localhost) ou HTTPS.
Samsung Internet : Certaines versions de Samsung Internet sur Android peuvent bloquer le canvas cross-origin. Utilise Chrome si tu rencontres une image noire.
Est-ce que les données quittent mon téléphone ?
Non. Tout le traitement (lecture de l'image, canvas, injection EXIF, gĂ©nĂ©ration du JPEG) se fait dans le navigateur. Aucune requĂȘte rĂ©seau n'est effectuĂ©e sauf le chargement initial des polices Google Fonts et de la librairie piexifjs depuis un CDN (jsDelivr).
L'application galerie affiche quand mĂȘme "modifiĂ©" ou une icĂŽne diffĂ©rente ? Les applications comme Google Photos ou Samsung Gallery peuvent dĂ©tecter qu'une image a Ă©tĂ© modifiĂ©e par d'autres moyens (hash du fichier, analyse IA, absence de thumbnail EXIF embarquĂ©). L'outil injecte les mĂ©tadonnĂ©es textuelles mais ne gĂ©nĂšre pas de thumbnail EXIF (IFD1), ce qui peut ĂȘtre un indicateur pour certaines apps avancĂ©es.
Puis-je modifier le profil de téléphone manuellement ?
Oui. Ouvre rephotograph.html dans un éditeur de texte, trouve la fonction detectDevice() et modifie ou ajoute un profil dans le tableau profiles. Chaque profil contient : make, model, focal, fn (f-number), iso, exp (exposition), fw35 (focale 35mm), w/h (résolution), soft (version firmware).
Comment vérifier que les EXIF sont bien présents ?
- Sur Android : ouvre la photo dans la galerie Samsung â "DĂ©tails" â les infos apparaissent comme sur ta capture d'Ă©cran
- En ligne : utilise jimpl.com/tools/exif-viewer ou exifinfo.org
- En ligne de commande :
exiftool 20260301_143022.jpg
La photo est floue / mauvaise qualité ? La qualité de la photo de sortie dépend directement de la qualité de l'image que tu as importée. L'outil redimensionne l'image à la résolution cible du téléphone, ce qui peut introduire du flou si l'image source est plus petite. Pour de meilleurs résultats, utilise des images de haute résolution.