fotosoftware

Dette forum bruges på EGET ANSVAR til at lege med scripts og andre ting med risiko for at beskadige sit eget og andres systemer.
soundpartner
Indlæg: 3461
Tilmeldt: 27. sep 2008, 23:51
IRC nickname: sound
Geografisk sted: København

fotosoftware

Indlæg af soundpartner »

ok here we go...

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
Selvudnævnt guru når det drejer sig om mobilt bredbånd

Webmaster og stifter af:
Billede
Hvor du finder scripts til en hver situation

Billede