Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Wenn wir nur mit der Processing Zeichenfläche arbeiten und keine externen Bilder hinzu laden, können wir die Farben auf der Zeichenfläche direkt aus dem pixels[]-Array auslesen. Dazu laden wir uns die Farbwerte in den Speicher loadPixels() gehen mit zwei verschachtelten for-Schleifen durch x und y Positionen und setzen an der entsprechenden Stelle einen neuen Farbwert pixels[loc] = color(255);. Zum Abschluss ist es wichtig updatePixels() auf zu rufen um die neuen Werte zu aktualisieren. :

Wenn wir das für jeden zweiten x-Wert machen erhalten wir beispielsweise folgendes Bild.

...

Bei diesem Beispiel machen wir das gleiche, was wir ganz zu Beginn getan haben, um ein Bild zu laden und auf der Zeichenfläche anzuzeigen. Dieses Mal verwenden wir aber statt der vor definierten Funktion image() eine eigene Funktion, welche durch alle Pixel des Arrays des Bildes geht und die darin enthaltenen Farbinformationen extrahiert:

Code Block
float r = red(myImage.pixels[loc]);

...


float g = green(myImage.pixels[loc]);

...


float b = blue(myImage.pixels[loc]);

Dann kopieren wir diese Informationen in das Pixel Array der Zeichenfläche:

Code Block
pixels[loc] = color(r,g,b);

Pixel lesen, verändern und schreiben

...

Im Beispiel “P03_9_Pixels_Threshold” zeichnen wir ein Schatz-Weiss Bild welches auf bestimmte Grenzwerte abgestimmt ist. Ausserdem zeichnen wir in diesem Beispiel nicht auf die Zeichenfläche direkt, sondern initialisieren ein neues “leeres” Bild auf dem wir dann zeichen:

Code Block
destImage = createImage(width, height, RGB);

...


destImage.pixels[loc] = color(255);

Processing_03_11

Im letzten Beispiel “P03_10_Pixels_Nachbar” verwenden wir einen Filter um Kanten zu erkennen. Dazu vergleichen wir immer den aktuellen Pixel mit seinen Nachbarn.

...