[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Fwd: Affichage d'images fixes synchronisées]



maderios, jeudi 13 septembre 2007, 20:02:18 CEST
>[...] 
> Dans le projet, il s'agit d'afficher 3 images fixes  sur 3 écrans 
> 1920x1080 en même temps.  Ce qui implique certainement 3 cartes 
> graphiques,  idéalement installées sur un seul PC afin de pouvoir 
> synchroniser le tout très précisément de façon centralisée.

  Deux cartes devraient suffire  si l’une d’elles a deux sorties
séparées (dvi/vga ou vhs). Il existe aussi des cartes avec trois
sorties.

  Sinon, si j’ai bien compris, tu veux afficher trois diaporamas
(différents ?) en même temps, avec des  délais entre les  images
différents ?
  Effectivement,  les diaporamas  des  visionneurs  habituels ne
permettent  pas d’avoir  des délais différents.  En revanche, tu
peux les utiliser  (les visionneurs habituels) pour afficher des
images une par une, en plein écran, mais tu n’auras pas de jolie
transition entre les images.  P.ex. avec le script (et qiv) :

#!/bin/sh
# usage: $0 img duree
qiv -f $1 &
sleep $2
kill %1

  et la boucle :

while read img duree; do ./le_script.sh $img $duree; done < lst

  ou le fichier 'lst' est une suite de lignes image - durée :
a1.jpg	 12
toto.gif 86400

  (qiv est très léger et rapide, il a une option -X pour choisir
l’écran Xinerama.)
  Ce n’est pas génial car on revient au bureau  (s’il y en a un)
pendant une fraction de seconde entre les images. On peut mettre
un fond noir et ne pas utiliser de wm.

  Sinon, on peut assez facilement utiliser  Ruby et  SDL (paquet
libsdl-ruby1.8 et ses dépendances nécessaires) :

#!/usr/bin/env ruby

require 'sdl'

SDL.init(SDL::INIT_VIDEO)
screen = SDL::setVideoMode(1920, 1080, 0, SDL::FULLSCREEN)

while (ligne = STDIN.gets)
    if ligne =~ /^(.*?)\s+([0-9]*)/
        print "image ", $1, " pendant ", $2, " s.\n"
        image = SDL::Surface.load($1)
        screen.put(image, 0, 0)
        screen.updateRect(0, 0, 0, 0)
        sleep $2.to_i
    else
        print "scories dans le fichier :", ligne, "\n"
    end
end

  (Prend le même genre de fichier en entrée standard.  Formats :
BMP, PPX, XPM, PCX, GIF, JPEG, PNG et TGA.
   Voir http://www.kmc.gr.jp/~ohai/rubysdl_doc.en.html .)

  Par contre, gérer sur quel écran ça va sortir, je laisse ça en
exercice au lecteur...

-- 
 Sylvain Sauvage



Reply to: