Gebruikershulpmiddelen

Site-hulpmiddelen


linux_terminal:foto

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

https://www.howtogeek.com/109369/how-to-quickly-resize-convert-modify-images-from-the-linux-terminal/

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

https://www.howtogeek.com/109369/how-to-quickly-resize-convert-modify-images-from-the-linux-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 :

  1. IMG_0259.CR2
  2. 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 :

  1. -d '%Y_%m%d_%H%M%S% definieert het datum formaat
  2. 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 !
  3. de -r zorgt er voor dat alle bestanden, inclusief die in de sub directories, worden aangepakt. Die heb ik nog bewust even weggelaten …
  4. de -ext cr2 zorgt er voor dat de bestanden.cr2 (met of zonder hoofdletters) worden aangepakt. Dat zijn dus RAW bestanden van Canon.
  5. de /home/hans/fotoos is de plek aar de bestanden met de nieuwe naam hermoemd zullen worden
  6. 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

  1. 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

  1. 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.

  1. het veld “Date/Time” wordt aangepast
  2. 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

linux_terminal/foto.txt · Laatst gewijzigd: 2025_0629_22:52 door Hans Bollen

Tenzij anders vermeld valt de inhoud van deze wiki onder de volgende licentie: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki