Bilder Kopieren in Processing

Hinzugefügt am von Stephan Thiel
Da wir über den get() Befehl auch beliebig grosse Ausschnitte aus einem Bild kopieren können haben wir viele Möglichkeiten kleine Teile des Bildes zu nutzen um neue Bilder zu erzeugen. In diesem Beispiel zeichnen wir ein kleines dynamisches Mosaik, indem wir über die Mauseposition einen Bildausschnitt wählen und nur diesen wiederholt auf der Bildfläche zeichnen.

Der Sketch

// unser Lego Bild
PImage img;

// die Breite und Höhe einer Kachel,
// diese berechnen wir über die Anzahl der
// Zeilen und Spalten
int gridStepX;
int gridStepY;

// aus wieviel Zeilen und Spalten besteht
// das Gittermuster
int numRows = 5;
int numCols = 5;

void setup() {
  // Groesse der Anwendung = Groesse des Bildes
  size(400, 375);
  background(255);
  
  // Bild laden  
  img = loadImage("lego.jpg");
  
  // Grösse der Kachel berechnen
  // Groesse = Gesamtgrösse / Anzahl der Spalten
  gridStepX = width / numRows;
  gridStepY = height / numCols;
}

void draw() {
  // wir "schneiden" uns unser Kachelstück
  // an der aktuellen Mausposition heraus,
  // und speichern dies in einem neuen Bild
  PImage imgPart = img.get(mouseX, mouseY, gridStepX, gridStepY);
  
  // gehe in 'Kachelschritten' entlang der Breite
  for (int x=0; x < width; x = x + gridStepX) {
    // gehe in 'Kachelschritten' entlang der Hoehe
    for (int y=0; y < width; y = y + gridStepY) {
      // zeichne das aktuelle Kachelbild an
      // der jeweiligen Stelle
      image(imgPart, x, y);
    }
  }
}