Bonjour,
Un client me demande la chose suivante :
A partir d'une photo que l'utilisateur sélectionnera dans un répertoire, il faut créer dans un répertoire PHOTOS 3 photos de type JPEG avec les caractéristiques suivantes (bien entendu, les proportions de la photo originale doivent être respectées dans ces 3 photos) :
Photo 1 : Largeur en pixels : 150 Hauteur en pixels : définie par homothétie Taux de compression : 60 %
Photo 2 : Largeur en pixels : 800 Hauteur en pixels : définie par homothétie Taux de compression : 33 %
Photo 3 : Largeur en pixels : 1024 Hauteur en pixels : définie par homothétie Taux de compression : 33 %
J'ai regardé l'aide sur dSauveImageJPEG, fait des tests mais je n'y arrive pas.
- le paramètre "Qualité" de dSauveImageJPEG ne permet pas de définir un taux de compression précis. - j'ai essayé d'utiliser 3 champs image invisibles avec pour chacun la largeur demandée et la hauteur calculée à partir d'une règle de trois, mais les photos 2 et 3 ne sont pas du tout nettes.
Je vous mets le code que j'ai créé mais je sais qu'il me manque quelque chose et peut-être suis-je parti sur une mauvaise piste ? ...
Merci par avance pour votre aide.
Pampi
Procédure Clic sur bouton (pour sélectionner la photo)
nomimage est une chaîne repdefaut est une chaîne InfoImage, Format sont des chaînes Largeur est un entier Hauteur est un entier
repdefaut = ComplèteRep(VG_CheminMedias)+ComplèteRep(IDvendeur)+"PHOTOS"
nomimage = gsSélectionnerImage(repdefaut, "Fichier.JPEG", "Sélectionner une image", ... "JPG (*.JPG)"+ TAB + "*.jpg" + RC + "JPEG (*.JPEG)"+TAB+".jpeg")
// PHOTO1 est un champ image en liaison avec un champ de type texte du fichier PHOTO1..Valeur = nomimage
// Récupération des caractéristiques de l'image sélectionnée InfoImage = InfoBitmap (nomimage) Format = ExtraitChaîne(InfoImage, 1) Largeur = Val(ExtraitChaîne(InfoImage, 2)) Hauteur = Val(ExtraitChaîne(InfoImage, 3))
// Copie de l'image sélectionnée vers les 3 images invisibles (elles ont toutes HQ+Homothétique étendu centré comme mode d'affichage) // Image 1: Largeur 150 pixels - taux de compression 60% // Image 2: Largeur 800 pixels - taux de compression 33 % // Image 3: Largeur 1024 pixels - taux de compression 33% dCopieImage(PHOTO1, Image1, copieSrcCopie) dCopieImage(PHOTO1, Image2, copieSrcCopie) dCopieImage(PHOTO1, Image3, copieSrcCopie)
// On calcule la largeur des photos 1 2 et 3 pour respecter les proportions de // la photo d'origine SI Largeur <> 0 ALORS Image1..Hauteur = (Image1..Largeur * Hauteur) / Largeur Image2..Hauteur = (Image2..Largeur * Hauteur) / Largeur Image3..Hauteur = (Image3..Largeur * Hauteur) / Largeur FIN
// On enregistre les photos A, B et C dSauveImageJPEG(Image1,ComplèteRep(VG_CheminMedias)+ComplèteRep(IDvendeur)+ComplèteRep("PHOTOS")+IDvendeur+"-01A."+Format,60)
dSauveImageJPEG(Image2,ComplèteRep(VG_CheminMedias)+ComplèteRep(IDvendeur)+ComplèteRep("PHOTOS")+IDvendeur+"-01B."+Format,33)
dSauveImageJPEG(Image3,ComplèteRep(VG_CheminMedias)+ComplèteRep(IDvendeur)+ComplèteRep("PHOTOS")+IDvendeur+"-01C."+Format,33)
// La photo stockée dans le fichier pour affichage à l'écran est la 1 PHOTO1 = ComplèteRep(VG_CheminMedias)+ComplèteRep(IDvendeur)+ComplèteRep("PHOTOS")+IDvendeur+"-01A."+Format |