Amiga Image ViewEr version 1.5 Mars 1994 Rôle : Afficher des images en 256 couleurs sur un Amiga de base . ------ Copyright : ----------- AIVE est (c) 1994 Laurent Vivier . Il ne peut être vendu dans un but commercial sans mon autorisation écrite . Tout distribution ne peut exiger plus de 15FF de frais . Plus généralement, je n'autorise personne à distribuer ce logiciel dans un but lucratif sans mon autorisation écrite . Ce logiciel ne peut être distribué séparé de ses documentations . Les fichiers "AIVE","AIVE.docF","AIVE.docE" ne peuvent donc être séparés . Je pense qu'on peut classer ce logiciel parmi les "Freeware", je ne demande donc rien en échange, sinon que les personnes susceptibles de le faire progresser me fasse parvenir leurs informations (nouveaux formats, nouveaux algorithmes, documents techniques concernant l'Amiga) . Avertissement : --------------- Je décline toute responsabilité quant à l'utilisation de ce logiciel . Toute utilisation se fait à vos risques et périls . Contact : --------- Adresse postale : Laurent Vivier Avenue Général De Gaulle 38380 Saint Laurent du Pont FRANCE Adresse électronique : Laurent.Vivier@ufrima.imag.fr (jusqu'à juin 1994) vivier@isis.imag.fr (idem) Formats Supportés : GIF87a,GIF89a (entrelacé ou non), IFF . ------------------- The Graphic Interchange Format(c) is the Copyright property of CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe Incorporated. Utilisation : ------------- L'utilisation de AIVE se fait uniquement à partir du CLI (ou Shell) . Le nom du fichier ainsi que les options d'affichage se font par passage des paramètres . Paramètres supportés : ---------------------- Les paramètres supportés sont affichés si on lance AIVE sans paramètres ! Tous les paramètres doivent être saisis en minuscule . AIVE name [hire|lore|ehb][nolace][grey][scale] [width w][heighth][ratio a/b][color #colors] HIRE,LORE,EHB : spécifie le mode graphique à utiliser HIRE : haute résolution LORE : basse résolution EHB : Extra-Half-Bright Le mode d'affichage par défaut est HAM . NOLACE : par défaut l'affichage se fait en mode entrelacé, cette option l'inhibe . GREY : affiche l'image en niveau de gris (16 couleurs, HIRE) COLOR n : permet d'indiquer le nombre de couleurs a utiliser (>= 8, par défaut le maximum) . Conjugué avec GREY, indique le nombre de niveaux de gris . SCALE : l'image est automatiquement réduite pour rentrer entièrement dans l'écran WIDTH w : spécifie la largeur maximale de l'image HEIGHT h : spécifie la hauteur maximale de l'image RATIO a/b : rapport de déformation de l'écran . Soit x et y, respectivement la largeur et la hauteur d'un point élémentaire de l'écran, alors : y = x * (a/b) par défaut : a/b = 1/2 en LORE (HAM,EHB) = 1/1 en LORE et NOLACE = 1/1 en HIRE = 2/1 en HIRE et NOLACE Je suis bien conscient que ces coefficients ne sont pas réalistes . Mais ceux-ci pouvant varier d'un écran à l'autre en fonction des réglages, de la fréquence (NTSC/PAL), d'une image à l'autre, toute autre valeur ne pourrait être que spécifique à MON écran . Alors, à vous de faire le boulot ( une méthode consiste à dessiner un rectangle a l'écran, même nombre de points hauteur/largeur, de prendre un décimètre pour mesurer ses côtes sur l'écran, et de faire le rapport) Interface : ----------- Après lancement, une fenêtre s'ouvre . On y trouve le nom de l'image en cours de chargement, son type (GIF87a, GIF89a, IFF ...), ses dimensions, ainsi qu'une barre reflétant la progression du décodage . Un bouton "Stop" permet d'arrèter la lecture, et de quitter le programme . Le recourci clavier est la touche "ESC", elle n'est active seulement si la fenêtre est sélectionnée (et non si l'image est sélectionnée !) . A noter : Sous OS2.0, il est possible d'afficher des images plus grandes que l'écran; rien de spéciale n'a été fait pour les parcourir, la seule solution existante est celle donnée par le système, c'est-à-dire presser la touche Amiga Gauche en même temps que le bouton gauche de la souris, et déplacer la souris pour déplacer l'image . Sous OS1.3, ce problème ne se rencontre pas : il est impossible d'ouvrir un écran plus grand, l'image est mise à l'échelle dans une taille standard (PAL ou NTSC) . Techniques Utilisées : ---------------------- Toutes les images subissent un dithering de type Floyd-Steinberg, qui consiste en une propagation de l'erreur aux points voisins . Il est bidirectionnel dans tous les cas . L'affichage en niveau de gris, qui je pense est ce que l'on peut faire de mieux sur un Amiga avec le chip set de base, utilise les coefficients de luminosité de la Commision Internationale de l'Eclairage (CIE), c'est-à-dire que chaque composante est pondérée par une valeur proche de la sensibilite de l'oeil, lors du calcul de la moyenne donnant l'intensité du niveau de gris . La recherche de la couleur la plus proche se fait en se projetant dans l'espace tridimensionel raporté aux composantes . Cela reviens à calculer la distance la plus courte dans cet espace . Cet espace est dilaté par les coefficients cités précédemment . L'extraction de la palette de couleurs se fait gràce à une méthode personnelle qui consiste à agglomérer les couleurs en ilots de proximité dans l'espace . On découpe l'espace en un nombre de sous-espaces, ce nombre est le nombre de couleurs désirées . La valeur de la couleur associée au sous-espace est le barycentre des couleurs de la palette d'origine contenu dans ce sous-espace . L'affichage a été accéléré par rapport à la version 1.0 en stockant les calculs au fur et à mesure de l'affichage (utilise une vingtaine de Ko en plus) La mise à l'échelle se fait gràce à une routine en assembleur n'utilisant aucun nombre en virgule flottante . La technique employée peut s'apparenter aux techniques utilisées pour faire de l'anti-aliasing . Evolutions possibles : ---------------------- - Lancement à partir du workbench . - gamma correction (est-ce utile ?) - implantation d'une option d'impression (utilisant toute la résolution de l'imprimante) . - implantation d'une option de sauvegarde . - ajout des format PCX, BMP (très probable), JPEG (peu probable, à cause de l'obligation de parcourir l'image pour extraire la palette) - complétion de l'interface homme-machine sous intuition Compatibilité : --------------- Ce soft a commencé à être développer sous Kickstart 1.2, Workbench 1.3 . Lors de sa diffusion, son développement se faisait sous 2.0, il devrait donc fonctionner sous tous les systèmes . Il a été rapidement testé sous 2.0 avec émulateur kickstart 1.3, à première vue il ne parait pas y avoir de problèmes . Il se peut qu'il y ait des problèmes sur des machines comportant des cartes graphiques : je n'utilise pas la fonction WritePixel de la graphics.lib pour écrire à l'écran, mais écris directement en mémoire, dans un but de rapidité . Toutes l'activité de test s'est faite sur mon A500 : carte mère rev 5a, OS2.0, 2 drives DDDS, 512 FAST, 512 CHIP . Remerciements : --------------- Frédéric Elisei Archimediste génial, qui a fourni de l'eau a mon moulin Franck Lyonnet idem Voyez leurs viewers JPEG sur Acorn Archimede 5000, qui tourne plus vite que n'importe quels viewers GIF sur Amiga (500 !) . Roger Wilson pour un article sur son soft ChangeFSI Steven A. Bennet auteur d'un décodeur GIF dont je me suis inspiré Cindy Crowford pour sa plastique superbe (motivante !) UFR Informatique qui m'a permis de découvrir le réseau internet, et donc et mathématiques l'accès a un nombre important d'informations appliquées de (Merci aux administrateurs système) Grenoble Venez étudier à Grenoble Historique : ------------ Janvier 1994 version 1.0 première distribution Janvier 1994 version 1.2 correction de 2 lègers bugs : - plantage sur des images de largeur impaire - légère correction du dithering pour éviter un effet de saturation . Mars 1994 version 1.5 correction d'autres bugs : - impossibilité d'afficher en grey avec low resolution . - impossibilité de faire un dégradé de gris avec moins de 16 niveaux . Evolution : - Accélération du dithering (un gain de 2 ou 3) - mise en place des routines de changement de taille de l'image Auteur : Laurent Vivier --------