Récemment j’ai été confronté à un petit problème tout simple. Je voulais avoir un compteur d’image en surimpression d’une vidéo. Avec kdenlive sous Linux je ne trouvais pas mon bonheur. Alors j’ai décidé de le fabriquer tout seul comme un grand.
Je me suis donc lancé tout d'abord avec PHP et GD. Le résultat n’étant pas à la hauteur de mes espérances j’ai donc fini avec ImageMagick, toujours sous php. Il est bon de savoir que Imagemagick est plutôt utilisé en ligne de commande.
Le but étant de créer une suite d’image que j’assemblerais dans kdenlive. Je vais donc créer des images avec transparences, 1 par Image de film
Pour le programme il s’agit d’un compteur pour 10 secondes en 25 images/seconde.
La version GD
voici le script php pour GD et sous linux Ubuntu (ensuite on utilise la command php -f moncfichier.php )
Les images sont créées dans /tmp
/***** créer un compteur vidéo en php et GD Jerome BAPTISTE 2013 */ <?php header ('Content-Type: image/png'); $im = @imagecreatetruecolor(1280, 720) or die('Impossible de crée un flux d\'image GD'); $text_color = imagecolorallocate($im, 255,224,0); $format = '00:%1$02d:%2$02d'; $fformat = 'chrono_%1$02d_%2$02d.png'; $fontfile = '/usr/share/fonts/truetype/ubuntu-font-family/UbuntuMono-B.ttf'; $black = imagecolorallocate($im, 0, 0, 0); $nbimageps = 25; $duree = 10; // On rend l'arrière-plan transparent for ($i=0;$i<=$duree;$i++) { for ($j=1;$j<=$nbimageps;$j++) { //on masque la zone (on l'efface sinon ça se superpose) imagefilledrectangle ( $im , 890 , 600 ,1250 ,690 , $black ); //on rend l'image transparente imagecolortransparent($im, $black); $filename = sprintf($fformat, $i, $j); echo $chrono = sprintf($format, $i, $j); //imagestring($im, 1, 930, 700, $chrono, $text_color); imagettftext ($im, 60 ,0 ,890 ,690 , $text_color , $fontfile , $chrono ); imagepng($im,'/tmp/'.$filename); } } imagedestroy($im); ?>
la version Image Magick - php
Pour image imagemagick il faut l’installer avec la commande
sudo pecl install imagick
Il faut l’activer dans le php.ini si pas déjà fait après l’install
voici le script pour imagemagick
/***** créer un compteur vidéo en php et imagemagick Jerome BAPTISTE 2013 */ <?php $format = '00:%1$02d:%2$02d'; $fformat = '/tmp/ichrono_%1$02d_%2$02d.png'; $fontfile = '/usr/share/fonts/truetype/ubuntu-font-family/UbuntuMono-B.ttf'; $duree = 10; $nbimageps = 25; for ($i=0;$i<=$duree;$i++) { for ($j=1;$j<=$nbimageps;$j++) { $filename = sprintf($fformat, $i, $j); try { /*** a new imagick object ***/ $im = new Imagick(); $draw = new ImagickDraw(); /*appel de la fonte*/ $draw->setFont($fontfile); /*taille du texte*/ $draw->setFontSize( 80 ); /*definition de la couleur du texte */ $draw->setFillColor('yellow'); /*creation du texte*/ $chrono = sprintf($format, $i, $j); /*creation de l'image avec transparence*/ $im->newImage( 1280, 720,'none' , "png" ); /* ecriture du texte*/ $im->annotateImage($draw, 890, 690, 0, $chrono); /*ecriture du fichier */ $im->writeImage( $filename ); echo 'Image Created'.$filename."/n"; } catch(Exception $e) { echo $e->getMessage(); } } } ?>
N’oubliez pas de régler la durée et le nombre d’image par seconde.
finition avec kdenlive
Sous kdenlive rien de plus simple
1) prendre tous les fichiers et les mettre dans arboresence du projet
2) toutes les sélectionner et modifier leur durée
3) les sélectionners de la première à la dernière (cliquer sur la première, aller sur la dernière) les faire glisser sur la timeline
Comments powered by CComment