Erg::aurelien

De {}
Aller à la navigation Aller à la recherche

Brief Initial :

> programme génératif de motifs

> le but du logiciel étant de générer des motifs d'après quelques simples réglages (encore à définir) ou bien d'après une image, un objet.

> extraire des formes issues de différents éléments "sources" pour créer des motifs

> images objet sources / réglages > génération de motifs

> extraction de lignes, ou de plages de couleur de l'objet sources > formes, lignes ré-assemblé pour motif

Shéma

Processus Initial :

1. Sélection d'une image à importer dans le logiciel.

2. Sélection d'une forme avec la sourie (lasso, rectangle, ellipse, ...?)

3. Isoler la forme / (ou principe copier coller sur l'image d'origine ? )

4 Réglage disposition en motif ( ou disposition arbitraire, libre, random ? )

5. Exporter/Sauvegarder le résultat.

Résultat : Effet glitché, motifs et détails de l'images mis en avant par la disposition en motif.


Premier Test :

Capture d’écran 2016-04-11 à 18.27.00.png

Capture d’écran 2016-04-11 à 18.10.52.png

Capture d’écran 2016-04-11 à 19.57.59.png

Capture d’écran 2016-04-11 à 20.29.41.png

Pattern --.jpg




Logiciel Final

1. Sélection d'une image à importer dans le logiciel.

2. Sélection d'une zone rectangulaire sur le plan de travail avec un clic gauche.

3. Duplique la zone sélectionné à l'endroit visé par un clic droit de la sourie.

4. Ces deux derniers étapes sont peuvent se pratiquer autant que voulu sur le plan de travail.

5. Si a zone dupliqué dépasse du cadre, l'excédent est reporté sur le bord opposée.

6. Possibilité de sauvegarder le plan de travail en image .jpg en appuyant sur la touche "s". Le fichier est nommé et numéroté puis enregistré dans le dossier de l'application.

7. Possibilité de réinitialiser en revenant à l'étape 1. en appuyant sur la touche "c".

Applications possibles

IMG 20160502 232836.jpg

IMG 20160502 232836 1.jpg

Code Processing


import java.io.File;

PImage img; PImage selection; float startX, startY; int indice;


void setup() {

  size(1275, 900);
  String s = "Please Select an .jpg image";
  indice = 0;

fill(50); text(s, 10, 10, 70, 80); // Text wraps within text box

  selectInput("Select a file to process:", "fileSelected");

}

void fileSelected(File selection) {

 if (selection.exists()) {
   img = loadImage(selection.getAbsolutePath());  //this loads the image
 }
 if (selection == null) {
   println("Window was closed or the user hit cancel.");
 } 
 else {
   println("User selected " + selection.getAbsolutePath());
 }

}


void draw()


{

 background(255);
 String s = "Please Select an .jpg image";
 
 fill(50);
 text(s, 10, 10, 70, 80);  // Text wraps within text box
  loadPixels();  // this loads the pixels so that they can be processed.
 
 if ( img != null )
 {
   image( img, 0, 0, img.width, img.height);  // this can be varied; places image and gives it an x and y coordinate and resizes image

// a placed image must be resized here.

 } 
 
 
 //background(245,245,245);
 if(mousePressed &&mouseButton==LEFT)
 {
   noFill();
   strokeWeight(1);
   stroke(255, 100);
   rectMode(CORNER);
   rect(startX, startY, mouseX-startX, mouseY-startY); //draw transparent rectangle when dragging 
 }
 

}

void mousePressed() {

 if(mouseButton==LEFT)
 {
   startX= mouseX;
   startY=mouseY;
 }

}

void mouseReleased() {

 if(mouseButton==RIGHT && selection!=null) 
 {  
   set(mouseX, mouseY, selection);
   if(mouseX + selection.width > width){
     set(-(width-mouseX), mouseY, selection);
   }
  
   
   img=get();
 }
 else 
 {
   selection=get((int)min(mouseX, startX), (int)min(mouseY, startY), (int)abs(mouseX-startX), (int)abs(mouseY-startY)); 
 }

}

void keyPressed() {

 if(key=='s'){
   saveFrame("pattern_"+indice+".jpg");
   indice = indice + 1;
   }
   if(key=='c'){
     reset();
   }

}


 void reset()

{

  background(100);
  
  selectInput("Select a file to process:", "fileSelected");

}