p5.js : la solution pour charger les images

p5.js : la solution pour charger les images

Lorsqu’on charge des images dans un script p5.js, ça se passe de façon asynchrone. C’est souvent une bonne chose car ça évite d’attendre. Mais parfois ça pose beaucoup de problèmes. Alors je cherchais depuis longtemps un moyen efficace d’être certaine que les images seraient entièrement chargées avant que la suite du script ne les utilise.

J’ai trouvé la solution grace à Perplexity, le moteur de recherche avec AI. Je lui ai demandé « what are the solutions which work for loading a lot of images in an array using p5js? », il m’a répondu avec des solutions banales (qui ne fonctionnent pas lorsque les images mettent du temps à charger). J’ai insisté en « lui disant » : « this doesn’t ensure that all images in the array are fully loaded. are there more robust solutions? ». Et là il m’a apporté la réponse que je ne trouvais pas ! Merci Perplexity !

J’utilise loadImage et une fonction « call back » qui incrémente un compteur (imagesLoaded) à chaque fois qu’une image est correctement chargée.
Lorsque le compteur imagesLoaded contient la valeur indiquée au début dans imagesToLoad, c’est qu’on a chargé autant d’images qu’on en avait prévu. On est donc prêts à la suite !

Et ça fonctionne, comme on peut le voir dans cet exemple.

Les 22 photos de cet exemples sont toutes chargées avant d’être affichées !

C’est ce que je voulais !

Site Kit, les services de Google sur WordPress

Site Kit, les services de Google sur WordPress

La nouvelle extension Site Kit, de Google, permet enfin de connecter, rapidement et facilement, un site WordPress et les services Google tels que Google Analytics, Google Search Console, Speed Test. Elle intégre également Google Optimize, Google Tag Manager et Google Ads que je n’utilises pas.

Pour un webmaster, c’est merveilleusement simple. J’installe l’extension Site Kit de Google en suivant ce tutoriel du site « Pour pas un rond » : WordPress : Site kit simplifie l’accès aux services de Google.

Un site web en 5 minutes avec Google sites

Un site web en 5 minutes avec Google sites

J’ai découvert récemment l’intérêt de créer un site avec Google sites dans des circonstances où l’on souhaite partager simplement des documents avec un groupe de personnes. Et aujourd’hui, je viens de regarder la vidéo d’Olivier Margerand, de Digital Collab, qui nous explique comment créer un site web en 5 minutes avec Google Sites :

J’en retiens que c’est extraordinairement simple et rapide ! Il est possible de mettre en ligne des éléments de Google Suite de manière très simple. Mais aussi qu’on peut imaginer une infinité d’utilisations, comme par exemple la création d’un site pour une machine, afin de déclarer des opérations de maintenance ou suivre des fonctionnement simplement en scannant le QR code affiché sur la machine !

J’ai beaucoup apprécié les propos d’Olivier Margerand, toujours aussi percutant et juste. Par exemple :

Ce qui compte maintenant c’est l’intelligence qu’on va mettre derrière tout ça : qu’est-ce que ça peut apporter ? Qu’est-ce que ça peut aider à simplifier dans une entreprise, dans une équipe, dans un processus, avec nos clients, avec nos prospects avec nos fournisseurs ?

Olivier Margerand, Digital Collab

Un essai rapide

Vous pouvez voir un essai réalisé en moins de 5 minutes également : mon test sur Google sites !

Et maintenant ?

Dans la vidéo Olivier Margerand fait référence à un contenu qu’il a créé sur les QR Codes : Comment créer un QR CODE ? 3 manières et 1 erreur fatale. C’est intéressant également.

Snap Caméra : effects spéciaux sur webcam !

Snap Caméra : effects spéciaux sur webcam !

J’ai découvert l’application SnapCamera par une vidéo de l’excellent Cyrille CARTERET, dont la chaine FastLearner Academy recèle d’excellents tutoriels sur l’environnement Google.

Il explique, dans la vidéo « 💥MEET 💥 SNAP CAMERA Ajouter des filtres sur votre webcam en visio google MEET« , comment utiliser Snap Camera avec Google Meet. Cependant les instructions s’appliquent également à Zoom, avec lequel je vient d’enregistrer cette vidéo :

Déguisements et visioconférence avec SnapCamera !

Installer Snap Caméra

Suivons les instructions de Cyrille CARTERET :

https://youtu.be/id9aP5CDCF8

Utiliser Snap Camera

Les instructions de Cyrille CARTERET sont très claires. Il faut tout simplement sélectionner la webcam SnapCamera plutôt que la webcam elle-même. C’est vrai dans google Meet, dans zoom et probablement d’autres applications.

La seule difficulté que j’ai eu est qu’il m’a fallu redémarrer windows deux fois avant que la webcam snapCamera devienne accessible.

Et maintenant ?

A nous de trouver des utilisations pratiques !

p5.js Brique 6 : créer un fichier avec des données collectées

p5.js Brique 6 : créer un fichier avec des données collectées

Nous voyons ici, dans ce sixème article de la série , comment créer un fichier et proposer à l’utilisateur de l’enregistrer. Nous recueillons des données (sur la base de la brique 5) et nous créons deux fichier texte au clic de la souris dans le canevas.

Pour voir le code complet du sketch : c’est ici sur GitHub ou ici sur l’éditeur p5.js en ligne. On peut également voir l’exécution ici sur une page GitHub. Attention tout le reste du code est expliqué dans la « brique » n°5.

La partie qui permet la création et l’enregistrement des fichiers se trouve dans la fonction mousePressed() :

function mousePressed() {
  if (mouseX > 0 && mouseX < width && mouseY > 0 && mouseY < height) {
    saveStrings(croppedUrl, 'croppedURLs.txt');
    saveStrings(imgUrl, 'fullURLs.txt');
  }
}

Dans ce script, un clic dans le canevas génère :

  • un fichier avec toutes les chaines de caractères de l’array (tableau) croppedUrl. Ce fichier est nommé croppedURLs.txt.
  • un fichier avec toutes les chaines de caractères de l’array (tableau) imgUrl. Ce fichier est nommé fullURLs.txt.

On utilise ici la fonction saveStrings() de p5.js. J’aurais également pu utiliser la fonction save(), de la même manière exactement. Dans d’autres circonstances on pourra s’intéresser aux fonctions : saveJSON(), saveTable(), voire saveCanvas() ou saveFrames().

Et maintenant ?

Et voilà nous avons une cinquième brique ! Les autres briques sont et seront publiées dans cette même série, .