traitement_image.data.le_cri.jpg.data est apparu, avec une copie de l’image.cri de type PImage en tête de fichier.le_cri.jpg dans la variable cri : void setup() {...}, cri = loadImage("le_cri.jpg");cri à l’origine de l’animation : void setup() {...},image(cri, 0, 0);Les variables de type PImage ont des attributs. Parmi eux :
widthheightOn y accède avec :
cri.widthcri.heightEn affichant ces deux valeurs avec println, nous pouvons fixer la taille
parfaite de notre animation (avec size).
loadPixels() charge la variable « magique » pixels
(pas besoin de la déclarer).pixels est un tableau à une dimension,pixels[n] est le n+1ème pixel,pixels.length est la taille de pixels.pixels[0] donne -9815765 ???println(hex(pixels[0]));println(red(pixels[0]));println(green(pixels[0]));println(blue(pixels[0]));println(hex(red(pixels[0])));println(hex(green(pixels[0])));println(hex(blue(pixels[0])));Questions :
x et y d’un pixel, quelle valeur donner à n
pour que pixels[n] contienne les informations du pixel de coordonnées
(x;y) ?void draw() {...}.for (int i = 0; i < pixels.length; i++) {
...
}
updatePixels();
Ici, la variable entière est déclarée et initialisée dans l’instruction for.
Le code placé sur les points de suspension sera exécuté, puis i va être
incrémentée (i++) tant qu’elle sera strictement plus petite que la taille du
tableau (i < pixels.length).
À chaque tour, pixels[i] sera un des pixels de l’animation, le i+1ème.
L’instruction updatePixels() va afficher à l’écran les pixels contenus dans
pixels.
À la place des ..., affectez à pixels[i] la valeur color(0).
Essayez une autre valeur que 0.
À la place des ..., affectez à pixels[i] la valeur color(m) ou m est
la moyenne des canaux rouge, vert et bleu.
On peut aussi ne permettre que deux niveaux de gris : 0 (noir) et 255 (blanc).
Utilisez une instruction conditionnelle (if) et testez quelques seuils.
DÉFI : programmer le réglage du seuil à la souris.
À la place des ..., affectez à pixels[i] la valeur color(x) ou x est
un des canal (rouge, vert ou bleu).
Réalisez un filtre sépia.
Afficher une image réduite de l’originale dans le coin en haut à gauche.
Recopier les pixels de pixels, mais dans le sens inverse avec cette boucle :
for (int i = 0; i < pixels.length; i++) {
pixels[i] = pixels[taille - 1 - i]
}
// où `taille` est le nombre de pixels de votre image
Que se passe-t-il ? Pourquoi ?
color[] nouveaux_pixels;setup avec :nouveau_pixels = new color[taille];taille est le nombre de pixels de votre image.pixels dans nouveaux_pixels dans une première boucle.nouveaux_pixels dans pixels dans une seconde boucle.updatePixels();.Pourrez-vous coder :
A suivre...