Vai al contenuto

ūüď£ sulla piattaforma e-learning di Codice Inutile sono disponibili i miei corsi: Introduzione alla programmazione e ūüÜē Introduzione all'Arte Generativa

Modificare la dimensione della finestra in base all’immagine caricata

ūüď¨ Per rimanere aggiornato sui prossimi articoli e su altri contenuti di creative coding, puoi iscriverti a questa newsletter. Per farlo √® sufficiente inserire il tuo indirizzo e-mail nel campo qui sotto.

Puoi leggere l'archivio qui. Powered by TinyLetter

Negli esempi che abbiamo visto fino ad ora relativi all’uso delle immagini all’interno di Processing abbiamo sempre impostato a priori la grandezza della finestra del nostro sketch in base alla dimensione dell’immagine caricata.

√ą un metodo molto semplice ma decisamente scomodo se dobbiamo utilizzare tante immagini diverse oppure se vogliamo rendere il nostro programma¬†universale.

Nella versione precedente di Processing era possibile utilizzare delle variabili all’interno della funzione size(). Questa opzione, per√≤, bench√© fortemente osteggiata dagli sviluppatori fin dal 2009 √® stata definitivamente rimossa con l’aggiornamento a Processing 3 perch√© impediva miglioramenti in termini di performance, velocit√† e compatibilit√† cross-platform.

Non disperate! Esiste una soluzione alternativa che, però, non è ben descritta nel reference del linguaggio. Ecco perché ho pensato fosse interessante scrivere un breve articolo a riguardo.

Ecco come fare:

  • All’interno di setup() √® comunque necessario indicare una dimensione di partenza con la funzione size(). Per semplicit√† possiamo scrivere: size(1, 1);
  • Dopodich√© aggiungiamo la seguente linea di codice: surface.setResizable(true); mi raccomando, fate attenzione alle maiuscole!
  • A questo punto, nel punto in cui abbiamo la necessit√† di reimpostare la dimensione √® sufficiente scrivere: surface.setSize(larghezza, altezza); dove¬†larghezza¬†e¬†altezza sono i nostri parametri.

Ecco un esempio con un’immagine:

/*
 * Modificare la dimensione della finestra in base all'immagine caricata
 * Federico Pepe, 25.06.2017
 * http://blog.federicopepe.com/processing
*/

PImage img;

void setup() {
  size(1, 1);
  surface.setResizable(true);
  img = loadImage("immagine.jpg");
  surface.setSize(img.width, img.height);  
}

void draw() {
}

Per cambiare la dimensione a ogni click del mouse:

/*
 * Modificare la dimensione della finestra in base all'immagine caricata
 * Federico Pepe, 25.06.2017
 * http://blog.federicopepe.com/processing
*/

void setup() {
  size(100, 100);
  surface.setResizable(true);
}

void draw() {
}

void mousePressed() {
  surface.setSize(round(random(100, 500)), round(random(100, 500)));  
}

Articolo precedente

Coding Rescue #1 - Invertire sotto-sopra una porzione di un'immagine

Articolo successivo

Una palette di colori da un'immagine

Unisciti alla discussione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.