PDF : faire un livre à partir de la camera

Ce script fabrique un pdf. Sur chaque page, 9 d’images capturées à intervalle régulier (une seconde). On appuie sur une touche pour lancer la création du pdf, on appuie sur une touche pour la stopper à la fin de la prochaine feuille.

Précédent | 9/27 | Suivant

Ce script peut évidemment être aménagé :
- le nombre d’images par page peut être adapté
- l’intervalle peut être réglé
- les marges peuvent être adaptées
Ces variables sont en début de script.

Les images sont collées les unes aux autres, mais une petite variable supplémentaire devrait permettre de les séparer sur la largeur et la hauteur.

Une police - Aller light - est utilisée. Elle peut être remplacée par une autre ou téléchargée gratuitement (suivre le lien dans le script).

Le code :

import processing.video.*;
import processing.pdf.*;

// appuyer sur une touche pour commencer
// appuyer pour stopper
// le script quitte alors en fin de page

// variable du script
int nb_ima=3; // nombre d'images à placer en largeur
int marges=40; // pixels à gauche, droite et haut et bas à respecter
int ledelai=1000; // delai entre chaque image

PGraphicsPDF pdf;
PFont myFont;
Capture video;
boolean stop=false;
boolean start=false;
float px, py;
float largeur_ima, hauteur_ima;

void setup() {
 size(594, 594);
 //String[] fontList = PFont.list();
 //println(fontList);
 video = new Capture(this, 320, 240, 24);
 pdf = (PGraphicsPDF)beginRecord(PDF, "video_book.pdf"); // titre du pdf
 beginRecord(pdf);
 largeur_ima=(width-(2*marges))/nb_ima;
 hauteur_ima=(largeur_ima/4)*3;
 px=marges;
 py=marges;

 background(255);
 myFont = createFont("Aller-Light", 24); // police gratuite : http://www.fontsquirrel.com/fonts/Aller
 textFont(myFont, 10);
 fill(0);
}

void draw() {
 if (start==true) { // appuyer sur une touche pour commencer
   delay(ledelai); // attente entre chaque image
   image(video, px, py, largeur_ima, hauteur_ima);
   px=px+largeur_ima;
   if (px>(width-marges)-10) {
     py+=hauteur_ima;
     px=marges;
     if (py > (height-marges-10)) {
       // ajoute la date
       String texte = day() +"/"+month()+"/"+year()+", "+hour()+":"+minute()+":"+second();
       text(texte, marges, (height-marges)+15);

       // si on a demandé l'arret, cloturer ici
       if (stop==true) {
         finit();
       }
       else {
         pdf.nextPage();
         px=marges;
         py=marges;
         background(255);
       }
     }
   }
 }
}

public void captureEvent(Capture c) {
 c.read();
}

void keyReleased() {
 if (start==false) {
   start=true;
 }
 else if (stop==false) {
   stop=true;
 }
}

void finit() {
 endRecord();
 exit();  // Quit
}