Want To Select Images and place them on selected area

edited March 2018 in How To...

Hi, i'm new at processing and i have a bit of a question. I want to design a poster, using random output from processing. At the end i'm writing a PDF (already know how) with a grid of 35 rectangles, on a already selected area.

With this, i want to let processing select 35 images out of a map (full with images), and placing them on the already selected area. I also want to do the same with text. Within the 35 grid-spaces, i want the word BOOK, split in different tokens and place them also random on the grid and then fill the leftover spaces with a an random images from that map.

Could anybody help me with this please? I understand the random and making a grid, but can't connect them

Answers

  • alright so if i understand correctly, you have an array that has 35 indexes and you want to randomly fill the positions with text and every index that is not filled with text should be filled with an image ?

    Does the user fill in the text? Or is the text pre defined and does it switch with an event?

    i can probably help you out, but i'm not sure i really understand what it is that you want to achieve

  • Yes indeed. 35 indexes, spread on a grid of 5x7. First i want to position the text. So each letter goes on on a index (the text is pre defined). Then it fills the leftover indexes in with (also a pre defined) random images [don't know the amount of images atm].

    Its for an event that i'm making a poster. And i want to write a processing, to randomly generate a new poster when running it, in that way their would be an unique poster everytime.

  • alrighty, in an hour or so i'll be home from work. i'll write some code for you then. but i wont write the entire program for ya ;)

  • r u dutch btw. Your name sounds dutch(ik ben het namelijk ook, maakt het net wat makkelijker communiceren!)

  • Thanks mate. En inderdaad :p

  • ik denk dat je zoiets als dit nodig hebt om je array te vullen met letters.

    zet in eerste instantie het woord in een array Om de letters gemakkelijk ergens te kunnen plaatsen

    char[] lettersBook =  {B,O,O,K}; 
    int[][] posities = arratPosities(lettersBook);  
    
    //zorg er dan voor dat je door een dubbele array (die je waarschijnlijk ook //gebruikt om het grid van 5 x 7 te maken?)heen kunt loopen.
    
    int[][] arrayPosities(char[] arrayMetLetters){
          int array[][] = new int[7][5];
          int bezet = 0;
    
          while(bezet < arrayMetLetters.length){
    // de randoms zetten posities(1) op een willekeurige plek
    
              int randomRij = int(random(arrayMetLetters.length));
              int randomKollom = int(random(arrayMetLetters.length));
    
    //als het vak leeg is vul deze dan met 1
    
              if(array[randomRij][randomKollom] == 0){
              array[randomRij][randomKollom] = 1;
              bezet++;
            }
          }
          return array; 
        }
    
    //nu heb je als het goed is een array die op 4 willekeurige plekken een 1 heeft //staan. deze kun je gebruiken om te bepalen waar je tekst komt en waar foto's 
    // denk dan aan het volgende
    
    
    for(int i = 0; i < posities.lenght; i++){
       for(int j = 0;j < posities[i].lenght; j++){
    if(posities[i][j] == 1){
    //plaats een van de letters hier(maak zelf een functie die bepaald welke letter er //komt.)
    }else{
    //plaats een van de foto's hier. (ik zou de foto's ook in een array opslaan)
    }
    }
    }
    

    hopelijk kom je hier al mee uit de voeten. zoals ik al aangaf geen heel programma, maar dit moet je wel al de goede kant op sturen denk ik:)

  • better formatted and corrected minor errors

    char[] lettersBook =  {
      'B', 'O', 'O', 'K'
    }; 
    int[][] posities = arrayPosities(lettersBook);  
    
    //zorg er dan voor dat je door een dubbele array (die je waarschijnlijk ook 
    //gebruikt om het grid van 5 x 7 te maken?) heen kunt loopen.
    
    int[][] arrayPosities (char[] arrayMetLetters) {
    
      int array[][] = new int[7][5];
      int bezet = 0;
    
      while (bezet < arrayMetLetters.length) {
        // de randoms zetten posities(1) op een willekeurige plek
    
        int randomRij = int(random(arrayMetLetters.length));
        int randomKollom = int(random(arrayMetLetters.length));
    
        //als het vak leeg is vul deze dan met 1
    
        if (array[randomRij][randomKollom] == 0) {
          array[randomRij][randomKollom] = 1;
          bezet++;
        }
      }
      return array;
    }
    
    // nu heb je als het goed is een array die op 4 willekeurige plekken een 1 heeft
    // staan. deze kun je gebruiken om te bepalen waar je tekst komt en waar foto's 
    // denk dan aan het volgende
    void show1() {
    
      for (int i = 0; i < posities.length; i++) {
        for (int j = 0; j < posities[i].length; j++) {
          if (posities[i][j] == 1) {
            //plaats een van de letters hier(maak zelf een functie die bepaald welke letter er //komt.)
          } else {
            //plaats een van de foto's hier. (ik zou de foto's ook in een array opslaan)
          }
        }
      }
    }
    
  • thnx chrisir for cleaning it up a bit

  • Oke, thanks. Ik probeer me doorheen het documentje wegwijs te maken :p. Moet ik hier ook gebruik maken dan van void setup en draw? Sorry als ik zoveel vragen stel die misschien wat lastig zijn, maar ik probeer het nog allemaal wat te begrijpen :p

  • die kun je nodig hebben, maar het hoeft niet persee,

    void setup() gebruik je om variabelen te initialiseren op het moment dat je programma begint. Dit doet hij dan ook maar een keer. hierin zou je bijvoorbeeld de volgende variabelen gebruiken:

    size(400,400);//grootte van je scherm

    Als je bv. je xAs en yAs wil laten bepalen dmv de grootte van je scherm doe je:

    xAs = width / 10; yAs = height / 5:

    deze variabelen heb je natuurlijk al wel helemaal boven aan in je programma als volgt gedeclareerd int xAs, yAs;

    void draw() gebruik is eigenlijk een constante loop. hierin zet je dus alle visuele elementen van je code. en al helemaal als het moet bewegen/ veranderen

    in je draw() zou je dus de show1 functie kunnen zetten en zou je met een muisklik bijv. het scherm laten veranderen. Maar aangezien je maar een scherm per keer tekent kan het ook in setup(), alleen moet je het programma dan afsluiten wil je een nieuwe layout krijgen.

    hopelijk maakt dit het een beetje duidelijk.

    Als je een stuk code hebt, wees dan niet bang het te delen! Maakt het ook weer makkelijker je de goede kant op te sturen ;)

  • edited March 2018
    void setup() {
    
      char[] lettersBook =  {
        'B', 'O', 'O', 'K'
      }; 
    
      int[][] posities = arrayPosities(lettersBook);  
    
      //zorg er dan voor dat je door een dubbele array (die je waarschijnlijk ook 
      //gebruikt om het grid van 5 x 7 te maken?) heen kunt loopen.
    
      int[][] arrayPosities (char[] arrayMetLetters) {
    
        int array[][] = new int[7][5];
        int bezet = 0;
    
        while (bezet < arrayMetLetters.length) {
          // de randoms zetten posities(1) op een willekeurige plek
    
          int randomRij = int(random(arrayMetLetters.length));
          int randomKollom = int(random(arrayMetLetters.length));
    
          //als het vak leeg is vul deze dan met 1
    
          if (array[randomRij][randomKollom] == 0) {
            array[randomRij][randomKollom] = 1;
            bezet++;
          }
    
      }
      return array;
    }
    
    // nu heb je als het goed is een array die op 4 willekeurige plekken een 1 heeft
    // staan. deze kun je gebruiken om te bepalen waar je tekst komt en waar foto's 
    // denk dan aan het volgende
    void show1() {
    
      for (int i = 0; i < posities.length; i++) {
        for (int j = 0; j < posities[i].length; j++) {
          if (posities[i][j] == 1) {
            //plaats een van de letters hier(maak zelf een functie die bepaald welke letter er //komt.)
          } else {
            //plaats een van de foto's hier. (ik zou de foto's ook in een array opslaan)
          }
        }
      }
    }
    }
    
    void draw() {
    }
    

    Ik heb op dit moment, genomen wat jij gezegd hebt, samen met die void dan, en gek genoeg doet hij niks en geeft hem foutje aan. Maar ik zie echt nergens dat foutje :s

  • Hoi stef, ik kan vanavond een kijkje nemen naar de code. het klopt dat de code die we je hebben gegeven niet compleet is en daarom een foutmelding geeft. vandaar de fout melding dus, waar deze precies zit kan ik vanavond voor je uitvogelen.

    ps.

    als je code op het forum plaatst highlight het dan en gebruikt ctrl+o om er voor te zorgen dat je code goed zichtbaar word op het forum ;) sommige mensen kunnen er nogal over vallen....

  • Was door drukte helemaal vergeten naar je code te kijken.... heb je nog hulp nodig?

Sign In or Register to comment.