Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2014-12-14 17:56:28 Processing - charger une image aléatoirement à partir d'un dossier

ant0
nouveau membre
Date d'inscription: 2014-12-14
Messages: 1

Processing - charger une image aléatoirement à partir d'un dossier



Salut à tous !

Je commence à travailler avec processing - qui est un outil génial (!) -
et je me retrouve confronté un petit problème pour lequel
je ne trouve pas d'aide sur processing ( ou alors je ne regarde pas au bon endroit )

Alors voilà, je suis entrain d'écrire un p'tit programme
qui agit sur une image importé, une sorte de filtre bidouillé:

- en lançant le programme j'ai une fenêtre qui s'ouvre, avec mon image importé modifié,
- possibilité d'agir sur l'apparition/disparition de l'image avec la souris.
- enregistrement des aperçus exécuté avec la souris en .png dans le dossier du programme

-------

J'aimerai bien faire en sorte que processing charge une image "aléatoirement" à chaque révolution du programme,
et que ça soit non pas une image que je lui donne mais qu'il aille la chercher dans un dossier.

par exemple : /users/ant0/desktop/image-avril. et qu'il pioche aléatoirement parmis 15 photos dans le dossier.

Ca serai cool que les images enregistrées au fur et à mesure du déplacement de la souris
(dans la fenêtre processing) s'enregistre dans un autre dossier, par exemple  "image-avril-mod01"
toujours sur mon bureau (ou ailleurs).

Voilà-voilà, si vous avez une petite idée ou des liens de trucs à aller voir ça serai trop génial !



je suis sur mac os X / processing 2.0.3 - Je vous copie le code de suite et l'image que j'utilise et en pièce jointe.

bisous

/ Ant0
   


PImage a;
boolean onetime = true;
int[][] aPixels;
int[][] values;
float angle;


void setup() {
  size(640, 640);
  frameRate(25);
  aPixels = new int[width][height];
  values = new int[width][height];
  noFill();

  // Load the image into a new array
  // Extract the values and store in an array
  //a = loadImage("casque-de-chantier-schuberth-avec-coiffe-4-points-conforme-din-en-397-jaune-30.jpg"); 
  a = loadImage
  a.loadPixels();
  for (int i = 0; i < a.height; i++) {
    for (int j = 0; j < a.width; j++) {
      aPixels[j][i] = a.pixels[i*a.width + j];
      values[j][i] = int(brightness(aPixels[j][i]));
    }
  }
}

void draw() {
  background(255);
 
  for (int i = 0; i < a.height; i += 1) {
    for (int j = 0; j < a.width; j += 1) {
      if (values[j][i]>mouseY){
        stroke(255);// default = 255
      }
      else {
        stroke(100);// default = 100
      }
      //stroke(values[j][i], 255); //affiche l'image complète sans interaction
      point(100+j*3-a.width/2, 100+i*3-a.height/2);
    }
  }
//save des img en .png dans le dossier en vrac = 000001.png, line-000002.png, etc.
  saveFrame("line-######.png");

Hors ligne

 

#2 2014-12-14 18:26:53 Re : Processing - charger une image aléatoirement à partir d'un dossier

Nicolas Lhommet
membre
Date d'inscription: 2014-01-18
Messages: 194

Re: Processing - charger une image aléatoirement à partir d'un dossier



faire un tableau des noms de fichiers présents dans le dossier : http://codelab.fr/59
ensuite tirer au hasard un nombre (entre zéro et la taille du tableau-1) pour choisir un élément du tableau, puis ajouter le chemin au début du nom du fichier obtenu (et éventuellement vérifier si le nom du fichier se termine par .jpeg, .jpg, .gif, .png, .bmp, .tiff)

si tu peux "formater" le nom de tes fichiers, comme image0.jpg, image1.jpg, etc... c'est encore plus simple, compose simplement le nom de ton fichier de cette manière : chemin + "image" + nombre au hasard + ".jpg"

note : par exemple la fonction random(15) te donnera un nombre à virgule compris entre 0 et 14.99999, qu'il faut ensuite transformer en un nombre entier ( grâce à la fonction int()  ) que Processing transformera enfin automatiquement en chaine de caractère. Exemple pour des images numerotées de 0 à 14 :

String fichier;
fichier = "image" + int(random(15)) + ".jpg";
println(fichier);

Dernière modification par Nicolas Lhommet (2014-12-14 20:07:11)

Hors ligne

 

#3 2014-12-14 20:10:42 Re : Processing - charger une image aléatoirement à partir d'un dossier

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Processing - charger une image aléatoirement à partir d'un dossier



Pour une portabilité de ton programme, tu peux utiliser des constantes des propriétés Java :

println(System.getProperty("user.home"));

Ainsi, tu peux utiliser un chemin de type :

File dossier = new File(System.getProperty("user.home") + "/Desktop/Images");
String[] fichiers = dossier.list();
println(fichiers);

Dernière modification par Mushussu (2014-12-14 20:11:36)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024