Obligement - L'Amiga au maximum

Mardi 23 mai 2017 - 16:48  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Programmation : Blitz Basic - programme de traitement d'images
(Article écrit par Mathieu Chènebit et extrait d'Amiga News - février 1997)


Ça y est ! J'ai enfin trouvé le programme qui va nous occuper durant plusieurs numéros. Je suppose qu'en lisant attentivement Amiga News, vous avez remarqué la rubrique de Barrou Diallo sur le traitement numérique des images. Et bien, figurez-vous que nous allons mettre ses cours en pratique afin d'obtenir notre propre logiciel de traitement d'images (genre GFX Lab par exemple). Attention, cet article va être un peu théorique du fait qu'il faut jeter les bases de notre programme sur papier.

Cahier des charges

C'est la première chose à faire avant de se lancer dans l'écriture d'un programme. Celui-ci peut se faire dans votre tête, ou bien sur papier, suivant l'envergure du projet. Il est de toutes manières préférable d'en faire un pour éviter de réécrire plusieurs fois les mêmes routines. Dans notre cas, il nous faut plusieurs choses : un programme multi-images (comme Photogenics), multi-effets, gérant de 2 à 256 couleurs (Amiga AGA seulement), possédant un "undo", localisé, disposant d'une aide en ligne et bien entendu respectueux du système. Les deux premiers points vont impliquer une grande modularité de manière à ce que nous n'ayons pratiquement rien à modifier en rajoutant des effets ou en utilisant plusieurs images. Nous n'allons malheureusement pas tout traiter dans cet article, faute de place, mais ne vous inquiétez pas, vous en découvrirez un peu plus le mois prochain.

Mise en pratique

Pour ce qui est de l'interface graphique, nous allons ouvrir notre propre écran (c'est plus simple pour nous que de l'ouvrir sur l'écran du Workbench) mais tout en laissant à l'utilisateur la possibilité de choisir quel mode d'écran il désire. Nous allons donc créer une fenêtre de requête pour le mode d'écran tout simple. Ensuite, il va falloir définir des menus. Nous aurons : Charger, Sauver, Sauver Sous, Voir (pour voir notre image en plein écran et non pas dans la seule fenêtre de prévisualisation), lnfos (informations concernant l'image), Quitter. De plus, il va donc nous falloir trois fenêtres : une pour les effets, une contenant la liste de nos images, et une fenêtre de prévisualisation affichant une partie de l'image active. Notez qu'on pourrait tout aussi bien associer une fenêtre à chaque image pour pouvoir en afficher plusieurs en même temps, mais cela ralentirait d'autant le programme et la consommation en mémoire grimperait en flèche. On va donc se passer de cette option.

Attachons-nous à la fenêtre des effets : pour que l'utilisateur puisse faire un choix le plus simplement du monde, nous allons avoir recours à un ListView (Cf. cet article et celui-ci). Pour notre fenêtre contenant les noms des images chargées, nous allons faire appel à des GTButton qu'on réinitialise à chaque chargement d'une image. On aurait pu aussi bien utiliser un ListView, mais autant vous faire voir un peu de tout ;-). Certains programmes affichent l'image réduite, mais j'ai trouvé cette possibilité beaucoup trop lente pour les petites configurations. Néanmoins, les grosses configurations pourront s'y essayer avec les commandes ReduceX2, Scale, GetAShape et enfin WBlit pour "coller" vos étiquettes.

La fenêtre de prévisualisation est, quant à elle, toute simple : nous nous contenterons d'y coller une partie des images (d'où le terme "PreView") avec la commande BitmapToWindow. Maintenant, attardons-nous un petit peu sur le mode multi-images. Pour arriver à cela, il nous faudra créer une table d'un type nouveau (NEWTYPE) appelé tout simplement... .picture ;-). Nous devons définir les champs de notre NewType : pour cela, il faut penser aux informations à stocker concernant notre image. Il nous faut son numéro, le numéro de sa palette (ce dernier est optionnel car c'est le même que le numéro de l'image, néanmoins je l'utilise pour plus de clarté dans mes routines), le nombre de plans, le nombre de couleurs (lui aussi optionnel, il est obtenu à partir du nombre de plans), la hauteur de l'image, sa largeur, son ViewMode, son chemin d'accès et son nom.

Ouf, c'est fini ! Comme vous pouvez donc le constater, c'est donc un NewType assez imposant que nous allons utiliser. Mais cette stature nous permettra de faire face à tous les problèmes éventuels et d'appliquer toutes sortes d'effets à notre image.

Nos premiers effets !

Ils ne sont pas formidables ;-). Le premier est un effet de base : le dégradé en niveaux de gris. Pour cela, nous allons utiliser une boucle fort simple. En partant de la couleur 0 jusqu'à la dernière couleur de notre palette, nous allons faire la moyenne des trois composantes pour chaque registre de couleurs et ensuite copier celle-ci à la place des trois composantes de notre registre couleur. Je sais, ça paraît compliqué, mais regardez l'exemple et vous vous apercevrez que c'est en réalité enfantin. Il ne reste plus qu'à faire un petit "Use Palette" et le tour est joué.

Un autre effet est la rotation (Barrou en a donné les explications dans Amiga News numéro 96 page 58, je ne vais donc pas y revenir) dont je me suis contenté de recopier l'algorithme ;-). Il est un peu plus complexe que le précédent dans le sens où il fait intervenir deux bitmaps : l'image originale plus un bitmap temporaire. Nous effectuons toutes nos transformations sur le bitmap temporaire que nous recopions lorsque l'effet est fini sur le bitmap original.

Bon, allez, on va se rajouter un troisième effet pour la forme ! il s'agit cette fois-ci d'un effet dit de "négatif". Il transforme la palette pour faire apparaître le négatif de l'image comme sur vos photographies. Il suffit de soustraire notre couleur à la dernière couleur de la palette et comme précédemment de faire un "Use Palette" umPal.

Le source

Il est je pense suffisamment commenté pour qu'il soit à la portée de tous. Désolé pour le peu d'explications techniques, mais la place me manque. De toutes manières, nous y reviendrons le mois prochain. S'il y a un quelconque problème d'ici là, n'hésitez pas à me contacter à ma nouvelle adresse électronique (matc999@spidernet.tm.fr) ou au journal qui transmettra.

Le mois prochain donc, on continue ce programme tout en abordant de nouveaux sujets : localisation, "undo", aide en ligne...

Blitz Basic
Blitz Basic
Blitz Basic
Blitz Basic
Blitz Basic


[Retour en haut] / [Retour aux articles]