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
}