Annons

dcraw och fotodatum

Produkter
(logga in för att koppla)

eggepegge

Medlem
Hejhopp,

Jag har lekt lite med dcraw, jhead mm för att autmatisera kovertering från RAW (Canon CR2 och CRW+THM) till JPG. Funkar fint att plocka ut den inbäddade "tumnageln" och autorotera mm. Men - jag får inte över tidsstämpeln då bilden är tagen till EXIF-data i JPG-filen. Plus en del annat som saknas där också, som tex blixt-information.

Är det någon som har tips på hur jag löser detta smidigast?

/Egge
 
eggepegge skrev:
Hejhopp,

Jag har lekt lite med dcraw, jhead mm för att autmatisera kovertering från RAW (Canon CR2 och CRW+THM) till JPG. Funkar fint att plocka ut den inbäddade "tumnageln" och autorotera mm. Men - jag får inte över tidsstämpeln då bilden är tagen till EXIF-data i JPG-filen. Plus en del annat som saknas där också, som tex blixt-information.

Är det någon som har tips på hur jag löser detta smidigast?

/Egge

Exempel:
jpegtran -copy all -rotate 90 infil.jpg > utfil.jpg

Här har du ett färdigt skript (senaste version 1.02). Det skalar ned och skärper upp kopior till "webbformat" och klickbara tumnaglar, hanterar både Exif och IPTC-data, extraherar jpeg ur råfiler och autoroterar vid behov, det kan också uppdatera befintligt album när nya bilder läggs till.

Även om du inte vill använda skriptet och göra album, så innehåller det många kod-tips.
 
Re: Re: dcraw och fotodatum

steelneck skrev:
Exempel:
jpegtran -copy all -rotate 90 infil.jpg > utfil.jpg

Här har du ett färdigt skript (senaste version 1.02). Det skalar ned och skärper upp kopior till "webbformat" och klickbara tumnaglar, hanterar både Exif och IPTC-data, extraherar jpeg ur råfiler och autoroterar vid behov, det kan också uppdatera befintligt album när nya bilder läggs till.

Även om du inte vill använda skriptet och göra album, så innehåller det många kod-tips.

Jodå, den biten är jag med på (och ditt script kommer jag nog låna en del ideer från). Problemet jag har är dock att jag inte får med all EXIF-data till den jpeg som skapas av dcraw från första början. Exempel:

Källkod:
$ exiv2 IMG_0139.CR2
Warning: Size 22458 of Exif.Canon.0x4002 exceeds 4096 bytes limit. Not decoded.
Warning: Size 49288 of Exif.Canon.0x4005 exceeds 4096 bytes limit. Not decoded.
Filename        : IMG_0139.CR2
Filesize        : 11653822 Bytes
Camera make     : Canon
Camera model    : Canon EOS 400D DIGITAL
Image timestamp : 2007:05:13 10:53:44
Image number    :
Exposure time   : 1/60 s
Aperture        : F4.5
Exposure bias   : 0
Flash           : Yes, compulsory
Flash bias      : 0 EV
Focal length    : 28.0 mm
Subject distance: 133
ISO speed       : 400
Exposure mode   : Auto
Metering mode   : Multi-segment
Macro mode      : Off
Image quality   : RAW
Exif Resolution : 3888 x 2592
White balance   : Auto
Thumbnail       : JPEG, 6223 Bytes
Copyright       :
Exif comment    :

[egge@farmen 20070510 Tuva]$ /tmp/dcraw -e -c IMG_0139.CR2 >/tmp/test6.jpg
[egge@farmen 20070510 Tuva]$ exiv2 /tmp/test6.jpg
Filename        : /tmp/test6.jpg
Filesize        : 3231799 Bytes
Camera make     : Canon
Camera model    : EOS 400D DIGITAL
Image timestamp :
Image number    :
Exposure time   : 1/64 s
Aperture        : F4.6
Exposure bias   :
Flash           :
Flash bias      :
Focal length    : 28.0 mm
Subject distance:
ISO speed       : 400
Exposure mode   :
Metering mode   :
Macro mode      :
Image quality   :
Exif Resolution :
White balance   :
Thumbnail       : None
Copyright       :
Exif comment    :

Som du ser saknas en hel del info i jpeg-filen. Går detta att lösa? Ska jag använda exiv2 i en andra runda för att kopiera över resterande EXIF-data? Har även många CRW-filer som ju bara har delar av all EXIF i CRW-filen, och all data i THM-filen. Gäller samma sak där, köra ett andra "pass" med exiv2 för att få över all data till jpeg-filen?
 
Re: Re: Re: dcraw och fotodatum

eggepegge skrev:
Jodå, den biten är jag med på (och ditt script kommer jag nog låna en del ideer från). Problemet jag har är dock att jag inte får med all EXIF-data till den jpeg som skapas av dcraw från första början.

(.. klipp ..)

Som du ser saknas en hel del info i jpeg-filen. Går detta att lösa? Ska jag använda exiv2 i en andra runda för att kopiera över resterande EXIF-data? Har även många CRW-filer som ju bara har delar av all EXIF i CRW-filen, och all data i THM-filen. Gäller samma sak där, köra ett andra "pass" med exiv2 för att få över all data till jpeg-filen?

Ja då förstår jag ditt problem. Det är Canon som inte förser de olika filerna med samma exif-data, så vill du att de skall innehålla samma metadata så får du ordna det själv. Ett andra "pass" med lämpligt program som du själv föreslår är en lösning. Ett alternativ för crw/thm kan vara att; kopiera .thm filen - skala upp den till samma storlek som den extraherade jpeg filen - kopiera jpeg filens innehåll till den uppskalade .thm filen - och sist, spara den modifierade .thm filen som .jpg
 
Senast ändrad:
Får köra i flera "pass" för att få till det verkar det som ja. Det som är lustigt är att tex CR2-filerna faktiskt innehåller all data, men dcraw flyttar inte med det till jpeggen. Samma sak gäller fotodatum som finns med i CRW-filen men inte i jpeggen som dcraw skapar.

Nåväl, jag gör det "manuellt" (scriptat) för tillfället, så får jag kika på koden till dcraw någon gång och se om jag kan hitta problemet där.
 
eggepegge skrev:
Får köra i flera "pass" för att få till det verkar det som ja. Det som är lustigt är att tex CR2-filerna faktiskt innehåller all data, men dcraw flyttar inte med det till jpeggen. Samma sak gäller fotodatum som finns med i CRW-filen men inte i jpeggen som dcraw skapar.

Nåväl, jag gör det "manuellt" (scriptat) för tillfället, så får jag kika på koden till dcraw någon gång och se om jag kan hitta problemet där.

Inte så konstigt alls, dcraw hanterar inte Exif över huvudtaget, den uppgiften överlåts åt andra program. Den jpeg man får ut med "dcraw -e" är bara en fil som kameran skapat och bäddat in i råfilen, så det är kameratillverkaren som bestämt vad som finns i den, inte dcraw. Råfilerna innehåller alltså både en färdig jpeg och rådatan (det är den inbäddade jpeg-filen man ser i kameradisplayen). Om du byter ut "-e" mot "-w" så tar du inte ut jpeg-filen, utan gör istället en interpolering av rådatan till bitmap, då får du inte med någon exifdata alls.

För .crw/.thm kan du använda följade (byt bara ut * mot aktuella filnamn, eller en variabel innehållandes det):
Källkod:
dcraw -w -c *.crw | convert -profile  *.thm  - *.jpg
Då får du in all Exifdata från .thm filen i jpeg-filen du interpolerat från rådatan. "-profile filnamn" är nyttigt även i andra sammanhang, det funkar dock inte för .cr2 filer eftersom dessa kräver speciellt anpassade program (thm-filen är ju bara en vanlig jpeg som alla program kan hantera rakt av).

Ett annat sätt som också funkar (även för cr2) är:

Källkod:
dcraw -w -c *.cr2 | convert - *.jpg 
exiv2 ex *.cr2 && exiv2 in *.jpg
rm *.exv

"exiv2 ex" och "exiv2 in" operationen funkar givetvis lika bra om du bara tar ut den inbäddade jpeg-filen istället för att göra en interpolering ("ex" skapar en .exv fil som sedan används av "in" förutsatt att resten av filnamnet är lika). I mitt albumskript så lägger jag dock inte in någon exifdata alls i de små album-jpeg det skapar, exifdatan tar jag istället ut från orginalfil och skriver in i albumets html-filer där bilden visas. En fördel med att ha exifdatan i html-filer är ju att det då är ren text som är lätt att söka i med normala sökfunktioner.
 
Ah, nu är jag med. Trodde dcraw hanterade exif-data också. Tack för det förtydligandet :)

Jodå, när jag skrev förra inlägget hade jag redan gjort ett "proof of concept" script som använder sig av "exiv2 ex" och "exiv2 in" för att knata igenom en hel katalog med CR2 eller CRW/THM och kopiera över exifdata till de extraherade jpeg-filerna.

Jag har hellre exif i själva filen då jag hanterar dem med olika verktyg, bla Gallery2 som ju plockar ur informationen ur bildfilen på egen hand och gör den sökbar ;)
 
ANNONS
Spara upp till 12000 kr på Nikon-prylar