Conversion d'une image dans un format spécifique pour Amiga :
- RAW : image de 2 à 32 couleurs : bitplanes 1 à N puis palette
- RAWB : image de 2 à 32 couleurs : lignes 0 (bitplanes 1 à N) à H-1 (idem), puis palette
En ce qui concerne la palette :
-
Les couleurs des versions converties affichées sont des approximations. En effet, ce sont des couleurs dont la valeur sur 4 bits de chaque composante est étendue à 16 bits en la multipliant par 255 / 15.
-
L'image chargée depuis le fichier n'ayant pas de palette (le Canvas ne permet de la manipuler qu'en true color), la palette est reconstituée à partir des couleurs découvertes dans le pixels au fil de leur parcours de haut en bas et de gauche à droite. Par conséquent, l'ordre des couleurs dans la palette reconstituée n'est pas nécessairement celui de ces couleurs dans la palette initiale. Pour contourner le problème, il faut rajouter une (ou plusieurs, selon le nombre de pixels requis) lignes en haut de l'image, composée de pixels dont les couleurs sont celles de la palette d'origine. Lors de la conversion, les couleurs de la palette seront ainsi découvertes dans le bon ordre, et il ne restera plus qu'à supprimer la ou les lignes excédentaires des données avant d'assembler pour produire le binaire.
Du fait des limitations de sécurité imposées par le navigateur (le chemin d'accès au fichier est masqué au script), l'image doit se trouver dans le répertoire de ce fichier HTML.
A FAIRE :
- Un système pour spécifier la palette : détecter les couleurs, en proposer la liste et permettre d'ordonnner la palette avant de convertir (ne règle pas le problème des couleurs identiques : alerter l'utilisateur quand il s'en rencontre).
- Charger de l'IFF. C'est la seule manière de pouvoir récupérer une palette et de bien la respecter plutôt que de la découvrir dans les pixels
- Généraliser la prise en compte du modulo qui figure en commentaire dans convertToRAW ()
- Des Array () sont utilisés là où des Uint16Array () auraient fait l'affaire au faux prétexte que ces derniers n'auraient pas de propriétés length (ils en ont)