ANNONS
Annons

Linux shell-skript

Produkter
(logga in för att koppla)
Filefterlysning

Den här tråden kan nog passa till att efterlysa lite filer att använda vid utveckling. Jag har ett lite större shell-skript som gör html-album av mina bildfiler, men det är bara uppbyggt med utgångspunkt från de filer just mina kameror levererar (300D och en ixus). Jag skulle vilja ha tag på lite orginalfiler från andra kameror, både råfiler och jpeg, så att jag ev. kan fixa till skriptet så att det funkar med filer från fler kameror.

Är det någon som kan förse mig med detta, så är ni välkomna att kontakta mig. Maila dock inte bilder till mig eftersom jag har lite trångt om utrymme i min mailbox, men skicka gärna ett mail med länk till filerna.
 
Re: Filefterlysning

steelneck skrev:
Jag har ett lite större shell-skript som gör html-album av mina bildfiler, men det är bara uppbyggt med utgångspunkt från de filer just mina kameror levererar (300D och en ixus).

Nu har jag gjort en rejäl uppdatering av skriptet så att det borde funka fint med filer från andra kameror än EOS 300D. En av fotosidans medlemmar skickade mig en råfil och en jpeg från sin 350D, tack. Det var värdefullt, framförallt för att bena ut hur jag skulle hantera bla. metadatan.

Jag har tyvärr inte kunnat testa filer från Nikon, Pentax eller Minolta, för ingen med sådan kamera har hört av sig med länkar till filer från deras kameror, men jag tror att det borde funka bra ändå. Det verkar nu funka så bra att jag satt versionen till 1.0.
 
Re: Re: Filefterlysning


Det var en nyttig länk med exempelfiler från många kameror.

Nu har jag uppdaterat mitt skript igen, och nu fixar det även filnamn med stora bokstäver (tänkte inte på det tidigare - tack till den som fick mig att tänka på det..). Nu har jag testat det med jpeg, tif och råfiler från följande kameror:

IXUS 400
EOS 300D
EOS 350D
EOS 400D
DiMAGE X1
Digilux1
NIKON D100
NIKON D2H
NIKON D2X
NIKON D70

Endast i fallet med Digilux1 så finns ett litet problem, och det är exif datumet som tjorvar (kan vara ett kameraproblem). Skriptet funkar nu även med icke-kamerafiler helt utan metadata. Jag har ännu inte testat med DNG-filer, men det torde funka lika bra.
 
Jag tror inte att det är något fel på exif-datan från digiluxen. Jag vill minnas att när jag tog fotot stog det 2002-01-01 i displayen så datum och tid var nog inte bara ställt.

/carl
 
Dags för en liten knuff igen kanske. Här är ett skript för att läsa ut vilken brännvidd en bild är tagen med och skriva till en tabell som jag sen kan läsa in i valfritt kalkylprogram och göra fina grafer av. Klockrent när man ska bestämma sig för vilka objektiv som ska med på fjällpromenad tex. Förra året togs en knapp tiondel av mina bilder med längre än 100mm, i år sparar jag ett knappt kilo packning:)

Källkod:
#!/bin/sh

for i in *
        do
        if [ -d $i ]
        then echo $i
         ALL=`for i in $i/*.jpg $i/*.cr2; do
         exiftool '-H' $i | grep "0x920a" | sed 's/0x920a.\
Focal.Length.*:.//; s/
.0mm//'
          done`
         echo $ALL > $i/lista.txt
         cat $i/lista.txt >> ./listan.txt
        fi
        done
exit 0
Skriptet förutsätter att det körs i en katalog där bilderna (från en EOS 350D) ligger sorterade i underkataloger och skapar en blankstegsseparerad tabell där varje katalog får en egen rad.

EDIT:
Skriptet är rätt långsamt och om någon har tips på hur det kan snabbas upp tar jag tacksamt emot dem.
 
Senast ändrad:
Per, denna analys är mycket användbar, jag har själv gjort den.

Beträffande ditt skript, verkar du ha onödiga begränsningar. Jag skulle föreslå en konstruktion, ungefär så här:

find -name '*.jpg' -o -name '*.cr2' | xargs exiftool '-H' $1 | grep [...] > helalistan.txt

Du får visserligen inte en notering av katalogerna, men behöver du det? Är det inte statistiken som är det viktiga?

Om detta gör exekveringen snabbare, däremot, är kanske litet tveksamt, men det skulle inte förvåna mig. Du spar processer och minne, i vart fall.

Per.
 
Noteringen är bara för att få en blick för hur långt skriptet är gånget då jag kör det på månadsbasis och har underkataloger med respektive dags fotande.
Jag får väl göra en klockning så ser vi om det går snabbare med ditt förslag, det verkar ju bli färre steg iaf.
 
Per du har sparat in lite tid åt mig, exekveringstiden blev ungefär en tredjedel med version två.

Källkod:
#!/bin/sh

find -name '*.jpg' | xargs exiftool '-H' $1 | grep "0x920a" |\
sed 's/0x920a.Focal.Length.*:.//; s/.0mm//' > listan.txt
exit 0

för att undvika risken för dubbletter tar jag nnu bara hänsyn till jpg-filer, men då skriptet som hämtar bilder från minneskortet skapar sånna när jag fotat i raw kommer de alltid finnas till hands.
Många tack
 
Mitt bidrag: Raw-konverteringsscript med Ufraw och ImageMagic.

Kör utan code-tag för jag är för lat för att fixa radbrytningarna :)

Detta är en kortare variant av ett längre script som jag jobbar med just nu. Ändra bara IMGPATH så det stämmer med er kortläsare/kamera.

Jag är fortfarande inte helt nöjd med --exposure=auto. Den klarar inte av att göra allt som jag vill men tar 95% av bilderna på mina minneskort okej. Jobbar nu med --exposure=1.05 och lite extra --gamma och --linearity. Dessa tre är en svår balans.

-sharpen är också en historia för sig. Efter att ha testat många exempel på nätet tycker jag enkla --sharpen 0.9 fungerar bra, men labbar vidare även där.

/dev/null istället för if-satser är väl kanske inte vårdat spräk, men det är ju inte programmering detta forum handlar om :)

Alla kommentarer och förslag välkomna.
-----------------------------------------------------

#!/bin/bash
#
DATE=`date`

#Sökväg till dina RAW-bilder
IMGPATH="/media/disk/DCIM/100CANON"

mkdir "$HOME/Desktop/Foto" 2> /dev/null
mkdir "$HOME/Desktop/Foto/Forum" 2> /dev/null
mkdir "$HOME/Desktop/Foto/Original" 2> /dev/null
mkdir "$HOME/Desktop/Foto/Web" 2> /dev/null

echo "Kopierar original till $HOME/Desktop/Foto/Original"
cp $IMGPATH/*.CR2 "$HOME/Desktop/Foto/Original" 2> /dev/null
cd $IMGPATH

for i in *.CR2; do

#Web
echo -e "Bearbetar filen $HOME/Desktop/Foto/Web/${i%\.*}.jpg"
ufraw-batch --wb=camera --exposure=auto --black-point=auto --gamma=0.47 --linearity=0.12 --saturation=1.02 --out-type=jpeg $i --output=- | convert - -sharpen 0.9 -filter Lanczos -scale 996x996 -bordercolor black -border 2 -quality 70 $HOME/Desktop/Foto/Web/${i%\.*}.jpg

#Forum
echo -e "Bearbetar filen $HOME/Desktop/Foto/Forum/${i%\.*}.jpg"
ufraw-batch --wb=camera --exposure=auto --black-point=auto --gamma=0.47 --linearity=0.12 --saturation=1.02 --out-type=jpeg $i --output=- | convert - -sharpen 0.9 -filter Lanczos -scale 396x396 -bordercolor black -border 2 -quality 70 $HOME/Desktop/Foto/Forum/${i%\.*}.jpg

done

----------------------------------------------------------
 
Senast ändrad:
Birger Olsson skrev:
-sharpen är också en historia för sig. Efter att ha testat många exempel på nätet tycker jag enkla --sharpen 0.9 fungerar bra, men labbar vidare även där.


Följande USM parametrar har jag funnit att fungera fint för en konservativ uppskärpning av bilder i "webformat":
-unsharp 0.6x0.6+1.68+0.08

Sedan skulle jag också vilja påpeka att "-filter Lanczos" inte fungerar tillsammans med "-scale", byt till "-resize "996x996" -filter Lanczos" så lyder convert även filter-parametern.
 
Tack för tipsen. Ser ingen skillnad på -scale och -resize. Är Lanczos default?

Skall titta lite närmare på både det och unsharp igen.

/B
 
Eller inte:

"See -resize for details about the geometry specification. -scale uses a simpler, faster algorithm, and it ignores the -filter selection if the -filter option is present."

.-)

Lika bra att köra -resize. Tack igen!
 
steelneck skrev:
Sedan skulle jag också vilja påpeka att "-filter Lanczos" inte fungerar tillsammans med "-scale", byt till "-resize "996x996" -filter Lanczos" så lyder convert även filter-parametern.

Ooopss, ett fel av mig. Filter parametern skall anges FÖRE -resize.
 
Om vi tittar på övriga parametrar:

--wb=camera

Fungerar klockrent tycker jag.

(Ibland vill man ju fuskvärma lite och då har jag kört med --temperature=6000 eller liknande.)

--exposure=auto

Fungerar ganska bra, men lite lotto på himmel och hav. Man kanske skulle skippa detta helt?

--black-point=auto

Fungerar klockrent tycker jag.

(Ibland lite förmycket.)

--gamma=0.47

0.45 standard. Vill ha mer än 0.47 här, men svår avvägning.


--linearity=0.12

0.10 standard. Vill ha lite mer här också men bilden blir snabbt mörk. Ger dock skön "glans".

--saturation=1.02

Här går det fort om man drar på. Inte mycket att göra. 1.02 ger lite extra mättnad men drar man på så smäller det direkt.

--out-type=jpeg

Borde inte behöva gå till jpeg i detta steg, men det ger bäst resultat av någon "konstig" anledning.

Vad tycker ni? Har ni labbat något? Nyfiken!
 
Jag får inte skriptet att fungera alls. Skripetet startar ufraw och jag får inga felmeddelanden men bilderna blir helt vita, dock med den svarta ramen.
 
carl_fredriksson skrev:
Jag får inte skriptet att fungera alls. Skripetet startar ufraw och jag får inga felmeddelanden men bilderna blir helt vita, dock med den svarta ramen.


Började felsöka och tar jag bort "--gamma=0.47" fungerar skripet. Provade med olika värden också. Vad gör gamma-inställningen? Någon ide om varför gamman inte fungerar?
 
ANNONS
Upp till 6000:- Cashback på Sony-prylar