bitmap et canvas

Image dans un canvas

Ce fichier contient les valeurs RGBa des pixels d'une image de largeur 100px et de hauteur 75px.

Cela signifie que les 4 premiers entiers : 193, 211, 223, 255 donnent le rouge, le vert, le bleu et la composante alpha du pixel se trouvant en haut à gauche dans l'image. Les quatre suivants donnent la couleur du pixel qui se trouve immédiatement à droite de ce premier pixel... Le centième paquet de quatre donne la couleur du dernier pixel de la ligne du haut de l'image.

Complétez le script suivant de façon à ce que le canvas affiche l'image.

Une solution en copiant collant les données du fichier

Récupération du fichier et utilisation d'un fichier modifié

Dans la solution précédente, on a choisi de copier-coller le contenu du fichier de données.

On peut éviter cela en procédant par exemple de la façon suivante :

  • On fait une copie locale du fichier. "locale" signifie : sur sa machine, et est à mettre en opposition à l'emplacement du fichier d'origine [le serveur du site].
  • On renomme le fichier en "dataScarlett.js".
  • On le modifie légérement en ajoutant "var tabPix = [" en début de fichier et "]" en fin de fichier.

On aura ainsi un fichier js avec notre variable de données. Il suffit de le charger dans l'entête de notre fichier html et le reste du script sera identique au précedent. On aura ainsi évité des manipulations pénibles et susceptibles d'être des sources d'erreur.

Récupération du fichier en local et utilisation sans modification

Dans cette variante, on récupère le fichier de données sur sa machine (comme avec le choix précédent) mais on ne modifie pas ses données.

Il nous faut donc lire directement dans le fichier les données.

Pour cela, nous utilisons un élément input de type file puis la fonction FileReader(). Vous chercherez les occurrences de ces mots sur le web pour en savoir plus. L'exemple ci-dessous pourra vous servir de base en cas de besoin.

Utilisation des données du fichier sur le serveur sans copie locale

Dans cette variante, on décide de ne pas copier-coller les données du fichier donnant les codes des pixels, ni d'en utiliser une version modifiée, ni même d'en faire une copie locale.

Il nous faut donc lire les données du fichier directement sur le serveur.

On cherche à récupérer les données du fichier directement dans une variable js à l'intérieur du script.

Pour cela, on peut utiliser XMLHttpRequest. Nous ne rentrons pas ici dans le détail d'utilisation de cette fonction (chercher sur le web les très nombreuses références la concernant). Nous donnons seulement un exemple d'utilisation qui pourra vous donner un point de départ pour aller plus loin.

Ce code relativement complexe peut être simplifié avec l'usage de jquery (solution suivante).

Remarques :

  • Avec une adresse locale sur votre machine pour le fichier, le script ne fonctionnera pas avec tous les navigateurs.
  • Il faut apporter des modifications à ce script pour qu'il fonctionne avec le navigateur de microsoft.

Simplification du précédent avec jQuery

jQuery est une bibliothèque javascript qui simplifie beaucoup tout le code javascript d'interaction avec les éléments html ou avec des fichiers.

jQuery.ajax va permettre de simplifier l'utilisation de XMLHttpRequest comme le montre le code ci-dessous.

Il vous faudra tout de même faire un peu de recherche web sur jQuery.ajax() pour saisir chaque étape.

Attention, avec une copie locale du fichier, il se peut que cela ne fonctionne pas (c'est une question de sécurité, en interdisant la lecture d'un fichier sur votre ordinateur, on assure qu'un site ne puisse pas récupérer des données sur votre machine à votre insu). Il faudra donc en général que le fichier à lire soit déposé sur un serveur.