Exemple 1 : placement d’une portion d’image avec random()

Cette fonction permet de prélever une portion d’image et de la placer dans la fenêtre en respectant les marges.

Précédent | 6/15 | Suivant

Il s’agit, sur base d’une image, de prélever une portion au hasard et de la placer dans la fenêtre, au hasard.

Voici le script avec la fonction. Il affiche 10 portions d’image, mais on peut faire plus ou moins de portions évidemment.

// variable image
PImage monimage;

// marges à respecter
int marges=30;

void setup() {
 size(800, 1000);
 monimage=loadImage("Funeral for the snail dad killed.jpg");
}

void draw() {
 background(255);

 for (int i=0; i<20; i++) {
   place_portion(monimage);
 }

 saveFrame("couverture-####.jpg");
 noLoop();
}

void keyPressed() {
 loop();
}

void place_portion(PImage im) {
 // choisir les coordonnées en x et y
 int origine_x=int(random(0, im.width-200));
 int origine_y=int(random(0, im.height-200));

 // largeur et hauteur de la portion
 // l'image ne doit pas dépasser la marge de la couverture
 // la portion fait au minimum 10% de la taille
 // et au maximum la distance entre l'origine de la copie et le bord de l'image
 // ou la taille en largeur de la couverture moins deux fois la marge
 // la plus petite de ces deux tailles est choisie par la fonction min()
 int largeur_portion=int(random(width*0.1, min(im.width-origine_x, width-marges-marges)));
 int hauteur_portion=int(random(height*0.1, min(im.height-origine_y, height-marges-marges)));

 // position de l'image dans la page
 float placement_x=random(marges, width-marges-largeur_portion);
 float placement_y=random(marges, height-marges-hauteur_portion);

 // on a tous les paramètres, on affiche
 image(im.get(origine_x, origine_y, largeur_portion, hauteur_portion), placement_x, placement_y);
}

Associé avec notre titre de bouquin, ça peut donner ça :