Jeg har i "julegave" fået nyt digitalkamera, og det er planen jeg skal til at pleje en af mine gamle hobbys nemlig fotografering blandtandet af koncerter og andre events.
til dette har jeg selvfølgelig mit nye digitalkamera, men har også invisteret i et eyefi kort som giver kameraet trådløst wifi så jeg kan overføre billeder til computeren on the fly.
Trin 1: Forbindelsen mellem kamera og computer den er der styr på, og det kører fint via et lille program skrevet i pearl
trin 2: flytning af filer, lave billeder i lavere opløsning, og med vandmærke det er der ligeledes styr på, og det jeg mangler nu er bare trin 3:
jeg skal have alle billeder til at køre i et slideshow som er selvopdaterende, med den lille bonus at de nyeste billeder skal vises i længere tid når de er sprit nye.
min nuværende løsning er ikke smuk, men jeg tror jeg har ideen til at gøre det endnu bedre.
nuværende er følgende:
Kode: Vælg alt
#! /bin/bash
function mapper {
# laver mapper
if [ -e raw/ ]
then
echo springer over raws
else
mkdir raw
fi
if [ -e jpg/ ]
then
echo springer over jpgs
else
mkdir jpg
fi
if [ -e video/ ]
then
echo springer over video
else
mkdir video
fi
if [ -e thump/ ]
then
echo springer over thumps
else
mkdir thump
fi
}
function show {
#kører slideshow med alle thumbnails
feh -FzZ -D2 ~/Skrivebord/eyefi/thump/ &
}
function andre {
#flytter raw og video til mapper
ne=`ls *.NEF`
if [ $? -eq 0 ]
then
mv *.NEF raw/.
fi
av=`ls *.AVI`
if [ $? -eq 0 ]
then
mv *.AVI video/.
fi
jpegs
}
function jpegs {
jp=`ls *.JPG`
if [ $? -eq 0 ]
then
#resizer og tilføjer vandmærke og flytter original til jpg:
ls *.JPG
mkdir temp
for file in *.JPG;
do
convert -sample 800x600 "$file" temp/"$file"
mv "$file" jpg/"$file"
convert -font /usr/share/fonts/truetype/ttf-breip/breipfont.ttf -fill white -pointsize 36 \
-draw 'text 10,521 "© Michael Jensen Foto@soundpartner.dk"' \
temp/"$file" temp/"$file"
mv temp/"$file" thump/"$file"
xloadimage -view thump/"$file" & sleep 10 && killall xloadimage #viser billedet i 10 sek i popup
done
rmdir temp
killall feh #stopper slideshowet
show #starter slideshowet igen nu med den nye fil som en del af slideshowet
else
sleep 10 #hvis der ikke er nogen jpg filer at arbejde med så holdes 10 sekunders pause inden der startes forfra med at se efter nye filer
fi
andre
}
mapper
show
andre
exit
som det er nu er der 2 fejl som jeg gerne vil rette.
1: jeg bruger xloadimage som er grimt
2: jeg bliver nød til at stoppe slideshowet der kører feh for at opdatere filerne
Som sagt vil jeg gerne have vist det nye billede i 10 sekunder når det er overført, og jeg har ikke fundet en viewer der kan vise billeder i et bestemt stykke tid, dervor viser jeg billedet, holder 10 sekunders pause, og slår så vieweren i hjel med killall.
det jeg egentlig gerne ville var at starte feh slideshowet således at det kører. når der så kommer et nyt billede ville jeg gerne bestemme hvilket pid feh har, starte en ny feh der denne gang kun viser det nye billede, og når denne køre, så slå den gamle feh i hjel ved at dræbe den med kill pid. efter 10 sekunder ville jeg så gerne finde feh's pid igen (den nye feh) starte en ny feh denne gang som kører med slideshowet med det nye billede inkluderet, og så dræbe den gamle feh.
det jeg egentlig mangler er vel egentlig komandoen til at finde feh's pid således at jeg kan dræbe den rigtige feh, og ikke den nye som jeg lige har startet op.
Jeg er klar på at det stadig er en lidt grim måde at klare det på, men det er på mange måder den simpleste og nemmeste måde lige pt
Nu har jeg ikke lige mulighed for at teste det, men vil følgende virke?
Kode: Vælg alt
#! /bin/bash
function mapper {
# laver mapper
if [ -e raw/ ]
then
echo springer over raws
else
mkdir raw
fi
if [ -e jpg/ ]
then
echo springer over jpgs
else
mkdir jpg
fi
if [ -e video/ ]
then
echo springer over video
else
mkdir video
fi
if [ -e thump/ ]
then
echo springer over thumps
else
mkdir thump
fi
}
function show {
#kører slideshow med alle thumbnails
feh -FzZ -D2 ~/Skrivebord/eyefi/thump/ &
}
function andre {
#flytter raw og video til mapper
ne=`ls *.NEF`
if [ $? -eq 0 ]
then
mv *.NEF raw/.
fi
av=`ls *.AVI`
if [ $? -eq 0 ]
then
mv *.AVI video/.
fi
jpegs
}
function fehpid {
pids=`ps | grep feh | sed -e "s/.*killp.*//" -e "s/ *\([0-9]\{1,6\}\) .*/\1/" | grep -v "^$"` # efterlader pid for feh
}
function jpegs {
jp=`ls *.JPG`
if [ $? -eq 0 ]
then
#resizer og tilføjer vandmærke og flytter original til jpg:
ls *.JPG
mkdir temp
for file in *.JPG;
do
convert -sample 800x600 "$file" temp/"$file"
mv "$file" jpg/"$file"
convert -font /usr/share/fonts/truetype/ttf-breip/breipfont.ttf -fill white -pointsize 36 \
-draw 'text 10,521 "© Michael Jensen Foto@soundpartner.dk"' \
temp/"$file" temp/"$file"
mv temp/"$file" thump/"$file"
fehpid
feh -FzZ thump/"$file" & sleep 5 && kill $pids && fehpid && sleep 5 #viser billedet i 5 sek, dræber så den gamle feh
, finder den nye pid, og venter 5 sek mere
done
rmdir temp
show #starter slideshowet igen nu med den nye fil som en del af slideshowet
kill pids # dræber den gamle feh
else
sleep 10 #hvis der ikke er nogen jpg filer at arbejde med så holdes 10 sekunders pause inden der startes forfra med at se efter nye filer
fi
andre
}
mapper
show
andre
exit