Inhoud
Fotoos bewerken in de terminal
mijn foto bewerk info moet beter georganiseerd worden. zie ook Fotoos bewerken
Fotoos bewerken :
- slim van naam veranderen
- slim van afmeting veranderen
- converteren naar een ander formaat
- 90 graden draaien, veel tegelijk
jhead - foto exif data bekijken in de terminal
Bekijk de exif data van een foto met jhead
jhead fotonaam jhead 2025_0609_023008.jpg File name : 2025_0609_023008.jpg File size : 775061 bytes File date : 2025:06:09 04:30:08 Camera make : Canon Camera model : Canon PowerShot SX730 HS Date/Time : 2025:06:09 02:30:08 Resolution : 2048 x 1368 Flash used : No Focal length : 19.2mm (35mm equivalent: 111mm) CCD width : 6.22mm Exposure time: 0.0012 s (1/800) Aperture : f/5.0 Focus dist. : 4.43m ISO equiv. : 160 Whitebalance : Auto Metering Mode: pattern GPS Latitude : ? ? GPS Longitude: ? ? JPEG Quality : 93
Fotoos van naam veranderen in de terminal
Fotoos van naam veranderen met
jhead -n%Y_%m%d_%H%M%S *[JjPpGg]
ik heb daar een alias voor gemaakt :
alias fotonaam
alias fotonaam='jhead -n%Y_%m%d_%H%M%S *[JjPpGg]'
exiftool - foto exif data bewerken in de terminal
Zie op het internet :
Voor het hernoemen van jpg foto's uit mijn camera gebruik ik jhead. Zie verderop.
Nou heb ik ook een camera die zowel jpg's als raw fotoos kan maken. Tegelijkertijd.
Dan heb je twee bestanden, met de zelfde naam/nummer, maar met verschillende extensie ; JPG en CR2.
Die wil ik dus ook hernoemen naar de meer leesbare naam, volgens mijn eigen bij het jhead verhaal aangegeven formaat :
2021_1212_131314. Dit is JJJJ_MMDD_HHMMSS. Snap u ?
Twee bestanden zoals ze van de Canon camera afkomen :
- IMG_0259.CR2
- IMG_0259.JPG
Voor Nikon camera's : RAW or NEF (Nikon Electric File)
Met jhead (zie verderop) hernoem ik de jpg als volgt
IMG_0259.JPG –> 2021_1127_093607.jpg
Dus wil ik de raw ook zo hernoemen
IMG_0259.CR2 –> 2021_1127_093607.cr2
jhead kan dit niet, want die werkt alleen op jpg's. Dus ik wil een vergelijkbaar gereedschap om raw fotoos te kunnen hernoemen op basis van de exif data in het bestand zelf.
Dat gaan we uitzoeken. Gogelen op “linux command exif raw rename” levert van alles op. Exiftool zou het met jpg en raw moeten kunnen. Ik ging verder met deze :
Ze geven een belangrijke waarschuwing : experimenteer met de commando's op bestanden die best kwijt mogen. Doe het niet op je originelen. Totdat je echt weet hoe het werkt. Leer je stap voor stap in. Documenteer wat je doet. Zoals ik met dit verhaal hier …
Open een terminal en kijk of exiftool geinstalleerd is : which exiftool. Het antwoord moet zijn : /usr/bin/exiftool. Als ja dan kun je los. Als nee, dan moet je 'm nog even installeren. In de terminal kan dat met : apt-get install exiftool. Wel uitvoeren met root rechten natuurlijk. De basis manier daarvoor is : zet er “sudo” voor.
Op naar de foto bestanden. In de terminal kun je met deze commando's de foto gegevens opvragen :
exiftool IMG_0259.JPG exiftool IMG_0259.CR2 exiftool IMG_0259*
Of de JPG, of de CR2, of allebei tegelijk. Het levert een heleboel exif data op, met andere woorden : Er zit een heleboel informatie in. De uitdaging is nou om die informatie te gebruiken om het bestand op de door mij gewenste manier te hernoemen. Op de webstek staat hoe dat moet. Dat wordt lezen. Tot zo.
Het op de website gevonden commando
exiftool '-filename<CreateDate' -d %y%m%d_%H%M%S%%-c.%%le -r -ext cr2 -ext mrw /home/hans/fotoos
heb ik aangepast tot
exiftool '-filename<CreateDate' -d %Y_%m%d_%H%M%S%%-c.%%le -ext cr2 .
Dit resulteert in :
2021_1127_093607.cr2
# een alias fotonaamraw maken voor dit commando :
alias fotonaamcr2="exiftool '-filename<CreateDate' -d '%Y_%m%d_%H%M%S%%-c.%%le' -ext cr2 ."
Over het aangepaste commando :
- -d '%Y_%m%d_%H%M%S% definieert het datum formaat
- de -c : voorkomt problemen bij bestanden die hernoemt worden naar een die al bestaat. - de .le : maakt een extensie met kleine letters, zonder hoofdletters. Dat wil ik. Hoofdletters hebben geen nut in configuratie. Let op de punt die ervoor moet !
- de -r zorgt er voor dat alle bestanden, inclusief die in de sub directories, worden aangepakt. Die heb ik nog bewust even weggelaten …
- de -ext cr2 zorgt er voor dat de bestanden.cr2 (met of zonder hoofdletters) worden aangepakt. Dat zijn dus RAW bestanden van Canon.
- de /home/hans/fotoos is de plek aar de bestanden met de nieuwe naam hermoemd zullen worden
- klad moet nog : w. Kopieen dus. Door dit pad te vervangen door een . (de huidige directory, die waar de originele bestanden staan, daar waar je het exiftool commando gestart bent) worden de daar bestaande cr2 bestanden hernoemt. Niet gekopieerd naar een andere map. Dit kun je ook regelen. Zie de webstek.
De alias doet het ! Tot zo ver. Het is nog niet af.
Volgende experiment wordt een map met meerdere fotoos, zowel jpg als cr2, en daar mn exiftool commando op los te laten.
Wordt vervolgd …
jhead - foto exif data bewerken in de terminal
Fotoos van naam veranderen in de terminal
Hoe pas je de datums aan in de exif data ?
Zie oa bijvoorbeeld : change-time-date-in-or-from-exif-data
man jhead
in de sectie : data manipulation
- ta<+|→<timediff>
Adjust time stored in the Exif header by h:mm forwards or backwards. Useful when having taken pictures with the wrong time set on the camera, such as after travelling across time zones, or when daylight savings time has changed.
Examples: Add 1 hour and 5 minutes to the time
jhead -ta+1:05
Decrease time by one second:
jhead -ta-0:0:1
This option changes all Date/time fields in the exif header, including “DateTimeOriginal” (tag 0x9003) and “DateTimeDigitized” (tag 0x9004).
-ts Sets the time stored in the Exif header to what is specified on the command line. Time must be specified as: yyyy:mm:dd-hh:mm:ss
Voorbeeld
cd /home/hans/fotoos/ jhead IMG_7951.JPG IMG_7952.JPG
dan vindt je oa :
File date : 2020:12:05 16:52:42 Date/Time : 2020:12:05 15:52:42
Zie het uur verschil !!!??? Date/Time geeft onze eigen tijd aan
eerst alle fotoos van naam veranderen met jhead -n%Y_%m%d_%H%M%S *[JjPpGg]
ik heb daar een alias voor gemaakt :
alias fotonaam
alias fotonaam='jhead -n%Y_%m%d_%H%M%S *[JjPpGg]'
de fotoos 180 graden draaien kan met
- nomacs - tools - batch processing
dan bepalen op welke tijd ik IMG_7951.JPG IMG_7952.JPG had moeten maken dan de correctie toepassen de tijd moet na 2020_1205_150047.jpg voor 2020_1205_150133.jpg IMG_7951.JPG = 2020_1205_155242.jpg => 2020_1205_150100.jpg. delta min =51 minuten 42 seconden IMG_7952.JPG = 2020_1205_155308.jpg => 2020_1205_150130.jpg. delta min = 51 minuten 38 seconden Er zijn twee mogelijkheden. mogelijkheid 1 verander de tijd middels een delta met minteken ervoor gaat de tijd terug met niks er voor gaat de tijd vooruit jhead -ta -0:51:42 2020_1205_155242.jpg jhead -ta -0:51:38 2020_1205_155308.jpg moet er een spatie naar de -ta ? ff proberen ! mogelijkheid 2 stel een nieuwe maak tijd in op yyyy:mm:dd-hh:mm:ss LET OP : na -ts geeeen !!!! spatie jhead -tsyyyy:mm:dd-hh:mm:ss dehuidigejpgnaam.jpg Voorbeelden : jhead -ts2020:12:05-15:01:00 2020_1205_155242.jpg jhead -ts2020:12:05-15:01:30 2020_1205_155308.jpg jhead -ts2020:12:05-15:01:00 2020_1205_155242.jpg jhead -ts2020:12:05-15:01:30 2020_1205_155308.jpg jhead -ts2023:09:03-14:00:00 2023_0903_140001.jpg jhead -ts2023:09:03-14:01:00 2023_0309_140002.jpg jhead -ts2023:09:03-14:02:00 2023_0309_160406.jpg jhead -ts2023:09:03-14:03:00 2023_0309_160442.jpg jhead -ts2023:09:03-14:03:00 2031_0303_140300.jpg jhead -ts2023:09:03-14:08:00 2031_0303_140100.jpg jhead -ts2023:09:03-16:04:00 2031_0303_140200.jpg jhead -ts2023:09:03-16:05:00 2031_0303_140300.jpg na het instellen van de nieuwe tijd de alias weer draaien om ook de filenaam aan te passen aan de exif data oftewel : jhead -n%Y_%m%d_%H%M%S *[JjPpGg]
en ziedaar, alle fotoos staan in de juiste volgorde, met de juiste filenaam en de juiste exif data.
jhead - Foto data van wintertijd omzetten naar zomertijd
Het is zomertijd of wintertijd geworden, maar die verandering in de camera instellen heb ik vergeten. Dus de exif data in de foto staat een uur verkeerd.
Wat moet je doen ? :
- De camera correct instellen : op zomertijd zetten, of in het najaar, terug op wintertijd.
# De wintertijd moest zomertijd zijn : # De exif data een uur later zetten # Doe dat met jhead -ta+1:00 *[JjPpGg] het veld "Date/Time" wordt aangepast het veld "File date " wordt niet aangepast
# De zomertijd moest wintertijd zijn : # De exif data een uur vroeger zetten # Doe dat met jhead -ta-1:00 *[JjPpGg] het veld "Date/Time" wordt aangepast het veld "File date " wordt niet aangepast
Na het aanpassen van de nieuwe tijd met jhead in de exif datade moet je de filenaam weer aan passen aan de nieuwe exif data met
jhead -n%Y_%m%d_%H%M%S *[JjPpGg]
en ziedaar, alle fotoos staan in de juiste volgorde, met de juiste filenaam en de juiste exif data.
- het veld “Date/Time” wordt aangepast
- het veld “File date ” wordt niet aangepast
ImageMagick - Fotoos verkleinen
Dit kan met terminal commando's, gebaseerd op de ImageMagick truken doos
zoek op het internet naar :
- Linux ImageMagick mogrify jpg resize
- Linux ImageMagick mogrify jpg rotate
- Linux ImageMagick convert png jpg (bijvoorbeeld : png to jpg)
Of, nog beter, begin in de handleiding :
Pas op : het originele bestand wordt overschreven. Als je dit niet wilt, geef dan een andere map op om het resultaat in op te slaan. (nog ff uitzoeken hoe dat er uit ziet. Of nog makkelijker, kopieer die fotoos eerst in die andere map. En pas ze daar aan.
mogrify -resize 20% *jpg mogrify -resize 800x640 *.jpg convert -resize 50% myfigure.png myfigure.jpg
Sites met bruikbare info :
ImageMagick - Fotoos converteren
Een van de ImageMagick commando's is 'mogrify'. Een andere is 'convert'
mogrify -format png ./*.jpg
Fotoos converteren van RAW naar JPG
De betere camera's kunnen foto's maken in RAW en in JPG. Ook beide. Stel dat je alleen RAW fotoos maakt, en je bespaart zo de tijd dat de camera ook nog de JPG moet uitrekenen en wegschrijven. Dan wil je uiteindelijk toch ook (waarschijnlijk) de JPG's. Een weg daarna toe is via nabewerking van de RAW bestand, en de daarop volgende export naar JPG. Voor veel foto's en vaak is dat mogelijk niet (meteen) nodig. Stel dat je snel een kijkbaar overzicht wilt hebben van wat je gemaakt hebt. Hoe pak je het aan ?
Met programma's :
Zie Foto werk
Met de LinuxTerminal :
Dit verhaal is nog even niet af !!!
Eerst is fotoxx aan de beurt, dat ziet er werkbaarder uit. Ook al is het niet het programma met de fijnste user interface. Het is wel gereedschap !
Haal de RAW bestanden van de camera. Ik doe dat bij voorkeur met een kabel, dan blijft de SD kaart veilig in de camera. Vervolgens hernoem ik de RAW fotoos met dit commando :
Hier staat beschreven hoe je van RAW naar JPG kunt converteren. Middels het 'convert' programma van ImageMagick. Dat is een gave foto bewerk trukendoos. Je moet dus imagemagick installeren. Het dan beschikbare terminal commando 'convert' gaat het werk doen.
Dus het stappenplan wordt :
- Kopieer de RAW bestanden van de camera naar de gewenste opslag locatie. Neem een map met uitsluitend en alleen deze RAW bestanden. Als de camera ook al JPG's gemaakt heeft, laat die weg uit de RAW bestanden map.
- Hernoem ze (zie hierboven, methode Hans), maar laat de extensie weg ; 2021_1127_093607
- Converteer de RAW bestanden naar JPG
- Hernoem dan de RAW bestanden alsnog, met de nieuwe naam, naar dezelfde naam, maar nu met extensie cr2 (zoals op mijn Canon camera)
# Dit doen we dus niet : # Hernoemen van alle RAW bestanden in de huidige map, naar nieuwe naam met .cr2 extensie # exiftool '-filename<CreateDate' -d %Y_%m%d_%H%M%S%%-c.%%le -ext cr2 .
Dit leidt tot bestanden met een naam zoals deze : 2021_1127_093607.cr2
# Dit doen we dus wel : # Hernoemen van alle RAW bestanden in de huidige map, naar nieuwe naam zonder extensie exiftool '-filename<CreateDate' -d %Y_%m%d_%H%M%S%%-c.%%le .
Dit leidt tot bestanden met een naam zoals deze : 2021_1127_093607
We hebben nu dus een map met RAW bestanden, zonder extensie. Een RAW bestand omzetten naar JPG is makkelijk :
convert 2021_1127_093607 2021_1127_093607.jpg
Alle RAW bestanden in de huidige map omzetten naar JPG's doen we met een loop commando in een linux script :
#!/bin/bash # Alle RAW bestanden beginnen volgens mijn conventie dus met 20 ! FILES=./20* for FOTORAW in $FILES do # Convert RAW to JPG, adding the extension 'jpg'. echo "Processing $FOTORAW file..." FOTOJPG='$FOTORAW.jpg' convert $FOTORAW $FOTOJPG file $FOTORAW file $FOTOJPG done
We hebben nu dus een map met RAW bestanden zonder cr2 extensie) en met JPG bestanden, met jpg extensie. Verplaats de JPG bestanden naar een andere map, met daarin alleen JPG bestanden. Moeten we de in deze map overgebleven RAW's nog hun extensie cr2 teruggeven. Als volgt :
# Dit doen we nu dus wel : # Hernoemen van alle RAW bestanden in de huidige map, naar nieuwe naam met .cr2 extensie # exiftool '-filename<CreateDate' -d %Y_%m%d_%H%M%S%%-c.%%le -ext cr2 .
Dit leidt tot bestanden met een naam zoals deze : 2021_1127_093607.cr2
