Re: Redimensionner une Images BMP

Posté par Anonyme le 14/6/2005 14:43:10
Bonjour,

Pour manipuler les images ( rotations, niveaux de gris, redimensionnement, conversions, infos EXIF des images numériques ) lorsque Windev ne sait pas faire, il est possible d'utiliser des programmes DOS.

Ces programmes s'appellent JPEGTRAN, NCONVERT et JHEAD
Ce sont des programmes dont les phases exécutables de faible volume sont simplement à copier dans le répertoire de travail de l'application qui les utilise.

Pour extraire les infos EXIF : utiliser JHEAD à récupérer sur le site suivant :
http://www.sentex.net/~mwandel/jhead/
Sélectionner le module : Pre-built Windows executable jhead.exe
Les commandes paramétrables sont ici :
http://www.sentex.net/~mwandel/jhead/usage.html

Pour les niveaux de gris et les rotations de fichiers JPEG sans perte des informations EXIF utiliser le programme JPEGTRAN à récupérer sur le site suivant :
http://membres.lycos.fr/photocanon/konica/liens.htm
Pour télécharger rechercher dans la page la ligne :
Télécharger Jpegtran sur le site FTP de ULead ou sur SimTel.
Les commandes paramétrables sont ici :
http://linux.about.com/library/cmd/blcmdl1_jpegtran.htm

Pour les conversions d'images y compris des formats non utilisés par Windev utiliser NCONVERT à récupérer sur le site suivant :
http://www.xnview.com/
Dans la colonne gauche, sous NCONVERT cliquer sur Telecharger,
Puis au bas de la nouvelle page ...
Téléchargement direct pour Windows
Cliquez ci-dessous pour télécharger
la dernière version de NConvert pour
Windows
Cliquer sur Télécharger !
Les commandes sont à récupérer dans les fichiers .TXT qui sont aussi dans le fichier téléchargé

---------- OBSERVATIONS --------------------

Ces programmes sont très puissants il sont tous utilisables de la même façon c'est à dire :
Créer un fichier .BAT contenant la commande du programme
Lancer l'exécution du fichier .BAT avec LanceAppli
Pour obtenir la vitesse maxi du DOS ne pas iconiser l'application, mais plutot cacher la fenêtre MSDOS en mettant la fenêtre appelante de la procédure audessus.tout

Voici un exemple d'utilisation avec JHEAD pour son utilisation sous Windev pour éditer les infos EXIF

PrgLance est une chaîne  // contiendra la ligne commande DOS 
WInfosExif est une chaine 

SI PAS LNomImage = "" ALORS 
    Sablier(Vrai) 
// cette ligne commande constitue le fichier IMGEXIF.TXT 
// qui contiendra le texte des informations 
// nota : sous W98 il faut utiliser CLS au lieu de EXIT 
// pour fermer la fenêtre MS-DOS 
    PrgLance = "jhead.exe " + LNomImage + " >"+ fRepEnCours() + "\IMGEXIF.TXT" 
+ RC + "CLS" 
// il faut constituer un fichier .bat qui servira à lancer 
// la commande DOS 
    fSauveTexte("AFFEXIF.BAT",PrgLance) 
// il faut cacher la fenêtre DOS sous la fenêtre Windev 
// appelante car exeIconise ralentit la vitesse de fermeture 
// de la fenêtre MS-DOS     
    FenEtat("MaFenetreApelante",DessusTout) 
// ne pas utiliser exeIconise mais exeActif 
    LanceAppli("AFFEXIF.BAT",exeActif,Vrai) 
// restitue le niveau d'affichage de la fenêtre appelante 
    FenEtat("MaFenetreAppelante",Normal) 
        WInfosExif = FChargeTexte(fRepEnCours() + "\IMGEXIF.TXT") 
    Sablier(Faux) 
        Info(WInfosExif) 
SINON 
    Erreur("Aucune image n'est presente") 
FIN 


--------------------------------

autre exemple pour passer un image en gamme de gris avec JPEGTRAN

SI PAS WImageATourner = "" ALORS 
   Sablier(Vrai) 
   PrgLance = "jpegtran.exe -grayscale -optimize -trim -copy all " + WImageATourner + " " + WImageResultat + RC + "CLS" 
   fSauveTexte("ROTATCLS.BAT",PrgLance) 
   FenEtat("FenetreEnCours",DessusTout) 
   LanceAppli("ROTATCLS.BAT",exeActif,Vrai) 
   fCopieFichier(WImageResultat, WImageConservee) 
   FenEtat("FenetreEnCours",Normal) 
   WImageAffichee = WImageResultat 
   Sablier(Faux) 
SINON 
   Erreur("Aucune image n'est presente") 
FIN 


--------------------------------------------------------
Autre exemple avec NCONVERT pour redimensionner une image en conservant le ratio Hauteur/Largeur

// nconvert -out jpeg -ratio -resize 480 0 *.jpg   
WRedParametre = "" 
SI WRedRatio = Vrai ALORS WRedParametre =  WRedParametre +" -ratio "   
WRedParametre = WRedParametre + " -resize " + WRedLargeur + " " + WRedHauteur 
WRedParametre = WRedParametre + " -rtype " + WRedMethode + " " 
SI PAS WImageATourner = "" ALORS 
   Sablier(Vrai) 
   // avec nconvert l'image traitée est directement celle donnée à traiter   
   PrgLance = "nconvert.exe " + WRedParametre + " " + WImageConservee + RC + "CLS" 
   fSauveTexte("ROTATCLS.BAT",PrgLance) 
   FenEtat("Recherche de fichiers",DessusTout) 
   LanceAppli("ROTATCLS.BAT",exeActif,Vrai) 
   FenEtat("Recherche de fichiers",Normal) 
   WImageAffichee = WImageConservee 
   Sablier(Faux) 
SINON 
   Erreur("Aucune image n'est presente") 
FIN 


---------------------

Cordialement


Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=12&topic_id=1015&post_id=10037