Cet atelier a pour objectif d'utiliser le visualiseur d'images IrfanView en ligne de commande, pour manipuler des images à partir du DOS, puis pour automatiser ces modifications à partir de Visual Basic.
Si IrfanView n'est pas installé sur votre ordinateur (c.a.d s'il ne figure pas dans c:\program files), alors installez-le à partir de www.irfanview.com. S'il était déjà installé, il est conseillé (mais pas indispensable) de vérifier que la version soit la dernière disponible.
De façon à pourvoir exécuter IrfanView quelque soit l'emplacement courant sous DOS, il faut rajouter le chemin d'IrfanView dans la variable path du DOS. Vous devez faire ceci grâce aux commandes suivantes :
A partir du menu démarrer, lancez IrfanView Help, cherchez command line options, et gardez cette doc dans un coin de l'écran (ou apprenez-la par coeur). Elle contient tous les paramètres de IrfanView en ligne de commande.
IrfanView est un visualiseur d'image, complètement gratuit. Depuis, il a évolué pour prendre en charge d'autres types de contenus. Il est ainsi capable de lire des vidéos, des documents textes, etc. Il possède également des fonctions très basiques de traitements d'images, dont les plus intéressantes sont la conversion et le redimensionnement.
Irfan est le prénom du concepteur bosniaque du logiciel.
Choisissez une image quelconque.
Placez-vous dans votre répertoire de travail avec la commande Z:\
(où Z:
représente votre répertoire de travail, à adapter le cas échéant).
Créez un répertoire images
avec la commande MD images
.
Placez-vous dans ce répertoire avec la commande CD images
. A ce stade, l'invite de commande doit être Z:\images>
.
Copiez ici l'image que vous avez choisi grâce à la commande COPY emplacement d'origine\nomimage
:
emplacement d'origine
est le chemin où se trouve l'image que vous avez choisie.nomimage
est le nom et l'extension (par exemple moi.jpg
) de l'image que vous avez choisie..
est important : il désigne la destination de la copie, en l'occurence le répertoire courant, c'est à dire Z:\images
.Vérifiez que vous pouvez afficher l'image grâce à la commande i_view32 nom-de-l'image
.
A partir de maintenant je suppose que votre image s'appelle image.jpg
. Vous devez remplacer image.jpg
par le vrai nom de votre image. Essayez les commandes suivantes :
Visualiser l'image en niveau de gris | i_view32 image.jpg /gray |
Dupliquer l'image en niveau de gris | i_view32 image.jpg /gray /convert=imagegray.jpg |
Convertir l'image d'origine | i_view32 image.jpg /gray /convert=image.jpg |
Vous remarquez :
/convert
, le résultat s'affiche dans la
fenêtre de IrfanView./convert=...
, le résultat est sauvegardé dans un fichier
(le même que celui d'origine ou un autre, selon le nom que l'on choisit). C'est cette méthode
que l'on utilisera de préférence, dans le but final d'automatiser
des traitements sur les images.De la même façon, testez les options suivantes, en respectant tout le temps la syntaxe suivante (sauf pour /capture
):
i_view32 image.jpg /option_a_tester /convert=image2.jpg
/crop=(x,y,w,h) | Pour extraire un morceau de l'image (x et y représentent la position en haut à gauche de l'extrait, w et h représentent la largeur width et la hauteur height de la zone à extraire). |
/resize=(w,h) | Pour redimensionner une image. w représente la largeur en pixel
(par exemple 300 ) ou en pourcentage (par exemple 50p ). Si vous souhaitez conserver les proportions
de l'image (conseillé), rajoutez l'option /aspectratio . |
/resample=(w,h) | Pareil, mais avec une meilleure qualité car l'algorithme appliqué est plus complexe. Cela se constate lorsqu'on rétrécit considérablement l'image. |
/capture | Facile, il suffit de tester. Attention ! /capture ne s'applique pas à une image. La syntaxe est donc tout simplement : i_view32 /capture . |
/invert | Facile, il suffit de tester. |
/bpp=BitsPerPixel |
BitPerPixel représente le nombre de bits sur lequel sont codés les couleurs. Par exemple : 4 bits permettent de stocker 16 couleurs par point (à convertir en bmp car jpeg n'accepte que 24 bits) :
|
/swap_bw | Facile, il suffit de tester. |
/rotate_r | Facile, il suffit de tester. |
La plupart des autres fonctions ne servent pas
à manipuler des images, mais à paramétrer l'application
elle-même.
Nous allons faire une application en Visual Basic (ou C#, ou ce que vous voulez) qui permet de parcourir toutes les images jpeg contenus dans z:\images, et de créer les mosaïques correspondantes (c'est à dire de rétrécir toutes les images à une taille unique).
Voici ce que vous devez faire :
1ère étape |
|
---|---|
2ème étape | Votre code doit créer le répertoire z:\Images\petites,
grâce à l'instruction Visual Basic mkdir : mkdir "z:\images\petites"
Pour ne pas obtenir une erreur lors du deuxième lancement de l'application, on précise qu'on crée le répertoire que s'il n'existe pas déjà : if dir("z:\images\petites", vbDirectory)="" then mkdir "z:\images\petites" |
3ème étape |
Votre code Visual Basic doit, dans une boucle While .. Wend,
parcourir toutes les images jpeg (c'est à dire avec l'extension
.jpg) contenues dans z:\Images. Ce parcours se fait grâce à l'instruction Visual Basic
DIR : |
4ème étape |
Pour chaque image, on doit lancer la commande MS-DOS qui va la rétrécir. La commande MS-DOS est la suivante :
Pour appelez cette commande à partir de Visual Basic, vous utiliserez
l'instruction Visual Basic Shell. Ceci est à placer, dans le code ci-dessus, à la place du commentaire
N'oublier pas que des guillemets contenus dans les guillemets doivent être doublés. Par exemple, si je veux afficher "bonjour", je fais msgbox """bonjour""". |
5ème étape | Copiez quelques images dans le répertoire Z:\images, puis testez votre programme. Si cela marche, vous devez retrouvez vos images en taille réduites, dans Z:\Images\petites. |
Testez... |
Améliorez ensuite votre programme, en faisant en sorte que :