codagePixels

codagePixelsCollectif d'auteurs [x]

La «proglet» codagePixels.

Cliquer ici pour accéder à une activité d'initiation à la proglet.
Cliquer ici pour faire l'activité.
Cliquer ici pour lire le tutoriel.
Cette proglet permet de manipuler une petite image de résolution variable, dont les coordonnées se définissent ainsi:
c'est à dire que l'abscisse (la position horizontale ou largeur, width en anglais) va de -width à +width (de gauche à droite) et l'ordonnée (la position verticale ou hauteur, height en anglais) va de -height à +height (de bas en haut).
La fonction:
reset(width, height);
width et height sont des int permet d'afficher une nouvelle image de largeur et hauteur données tandis que la fonction
load(image);
image est le lien «url» de l'image, permet d'afficher image disponible sur internet (attention sa taille doit rester modeste inférieur à 5002) tandis que
int width = getWidth();
int height = getHeight();
renvoient la largeur (width) et hauteur (height) de l'image qui a été chargée.
Pour définir un point de couleur dans cette image la fonction setPixel:
setPixel(x, y, color);
  • x est un int, entre [-width, +width], abscisse du point;
  • y est un int, entre [-height, +height], ordonnée du point;
  • color est un String qui donne la couleur du point, ses valeurs étant "black", "blue", "cyan", "gray", "green", "magenta", "orange", "pink", "red", "white", "yellow".
permettre d'écrire un pixel couleur dans cette image.
Pour définir lire/écrire un point monochrome les fonctions setPixel/getPixel:
int valeur = getPixel(x, y);
setPixel(x, y, valeur);
  • x est un int, entre [-width, +width], abscisse du point;
  • y est un int, entre [-height, +height], ordonnée du point;
  • valeur est un entier entre 0 (pour le "noir") et 255 (pour le "blanc"), toutes les valeurs entre 0 et 255 définissant les valeurs de gris,
permettre de lire/écrire un pixel monochrome dans cette image.
Un exemple d'utilisation: lors de la démonstration, le signe de la paix va s'afficher:
ceci, à différentes résolutions 256, 128, 64, 32, 16, 8, 4, 2, 1. Avec une bonne résolution il sera très lisible, puis petit à petit il se réduira à quelques pixels.
Voici un autre exemple de petit programme, et celui permettant de démarrer l'exercice.
Voici deux exemples de programmes élèves de tracé d'une petite animation et d'une autre animation.
Voici aussi deux exemples de tracés de fractals de Mandelbrot et de Julia
Voici un exemple de programme qui superpose deux images.
Voici un bel exemple de programme sur les ondelettes de Harr.
Voici un autre bel exemple de programme de dessin d'undragon sous 8 écailles.
Cette «proglet» est un composant logiciel ouvert dont documentation et code-source sont disponibles ici

Remarques

  1. Image non zoomée: On utilise ici un zoom automatiqus, mais il est aussi possible d'utiliser une taille "brute" et fixe, celle de l'image, comme documenté ici
  2. Coordonnées non centrées: On utilise ici des coordonnées centrées, mais il est aussi possible d'utiliser des coordonnées "brutes" [0, width[ x [0, height[ (de gauche à droite et de bas en haut) avec cette proglet, comme documenté ici
  3. Images couleurs: Il est aussi possible d'utiliser des pixels couleurs en spécifiant les valeurs rouge-vert-bleue écrites avec setPixel(x, y, red, green, blue) (ou par leur nom) et lues avec int rgb[] = getPixelColor(x, y) (la valeur rouge est rgb[0], bleue rgb[1], et verte rgb[2]).
  4. Manipulation d'images sous forme de tableau Voici disponibles quelques routines exemples pour aller plus loin: redimensionner une image, la manipuler en tableau, etc...
  5. Sauvegarde d'images: Il est aussi possible de sauvegarder une image dans un fichier, avec save(String).
  6. Format ASCII: Il est aussi possible de charger/sauvegarder des images en format ASCII PBM, PGM ou PPM pour en analyser le codage (voir ici).
  7. Détection de clic: On peut détecter un clic utilisateur avec un Runnable et récupérer la position dans l'image avec les fonctions getX() et getY().