PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD9] Résolution image
[WD9] Résolution image
Débuté par Pampi, 24 nov. 2005 10:03 - 6 réponses
Posté le 24 novembre 2005 - 10:03
Bonjour,

Comment peut-on modifier la résolution verticale et la résolution horizontale d'une image JPEG ?

Merci par avance.

Pampi
Posté le 24 novembre 2005 - 11:48
Salut

Si tu as une image JPEG de 1000x1000. Tu peux l'afficher dans un champ
Image de 500x500. Avec dSauveImageJPEG tu peux alors créer une image
JPEG de 500x500.

Est-ce bien ce que tu veux faire ?

--
Ciao
Pat Biker
http://aaa.windev.free.fr/


On Thu, 24 Nov 2005 09:03:08 +0100, "Pampi" <Pampi@wanadoo.fr> wrote:


Bonjour,

Comment peut-on modifier la résolution verticale et la résolution horizontale d'une image JPEG ?

Merci par avance.

Pampi

Posté le 24 novembre 2005 - 16:35
Merci pour ta réponse Pat.

En consultant ton site, je vois que tu es un spécialiste de la gestion des images dans WinDev ... je ne pouvais pas rêver mieux ! ;o)

J'ai déjà soumis mon problème exact dans un post récent (sujet : "Compresser une image") mais personne ne m'a donné de solution ...

Je le soumets ici à nouveau (en plus simple) en espérant que tu pourras m'éclairer ...

Je t'en remercie à l'avance .

Pampi


Un client me demande la chose suivante : à partir d'une photo (dont on ne connaît pas à l'avance la hauteur et la largeur) que l'utilisateur sélectionnera dans un répertoire, il faut créer sur C:\ 3 photos de type JPEG avec les caractéristiques suivantes (bien entendu, les proportions et la qualité de la photo originale doivent être respectées dans ces 3 photos car elles seront utilisées sur un site Internet) :

- 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 %

COMMENT FAIRE ?

J'ai essayé avec dSauveImage JPEG, en utilisant la bibliothèque Gdi.WDL (qui contient une classe pour gérer les images) mais rien n'y fait ... les photos générées n'ont pas la qualité de la photo initiale.

Merci par avance.
Posté le 24 novembre 2005 - 17:32
Merci pour ta réponse.

C'est exactement ce que je fais ... recalculer les largeurs par la règle de trois , 3 images hors-écran ... Je ne comprends pas.

Est-ce que je pourrais t'envoyer mon projet (que la fenêtre et le code concernés par ma question) pour que tu voies ce que j'ai mal fait (à l'adresse sur ton site ou une autre ...) ?

Je te remercie déjà pour ton aide.

Bonne soirée.

Pampi

PS si tu es OK, je te l'enverrai demain matin, je dois partir ...
Posté le 24 novembre 2005 - 17:43
Salut

Je ne vois pas de difficulté dans ce que tu décris. Avec dSauveImage,
il n'y a pas de perte de qualité à partir du moment où le format de
sortie est < à celui de l'image initiale.

Quand l'utilisateur à choisi l'image, la commande InfoBitmap te permet
de connaitre sa hauteur et sa largeur.

Tu dois disposer de 3 images différentes.

Le premier traitement consiste a redimensionner ces images. C'est une
règle de trois. Ensuite tu affectes chaque image avec le fichier image
et puis dSauveImageJPEG avec le taux de compression adéquat.

Note: tes 3 images peuvent être hors-écran

--

Ciao
Pat Biker
http://aaa.windev.free.fr/


On Thu, 24 Nov 2005 15:35:27 +0100, "Pampi" <Pampi@wanadoo.fr> wrote:


Merci pour ta réponse Pat.

En consultant ton site, je vois que tu es un spécialiste de la gestion des images dans WinDev ... je ne pouvais pas rêver mieux ! ;o)

J'ai déjà soumis mon problème exact dans un post récent (sujet : "Compresser une image") mais personne ne m'a donné de solution ...

Je le soumets ici à nouveau (en plus simple) en espérant que tu pourras m'éclairer ...

Je t'en remercie à l'avance .

Pampi


Un client me demande la chose suivante : à partir d'une photo (dont on ne connaît pas à l'avance la hauteur et la largeur) que l'utilisateur sélectionnera dans un répertoire, il faut créer sur C:\ 3 photos de type JPEG avec les caractéristiques suivantes (bien entendu, les proportions et la qualité de la photo originale doivent être respectées dans ces 3 photos car elles seront utilisées sur un site Internet) :

- 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 %

COMMENT FAIRE ?

J'ai essayé avec dSauveImage JPEG, en utilisant la bibliothèque Gdi.WDL (qui contient une classe pour gérer les images) mais rien n'y fait ... les photos générées n'ont pas la qualité de la photo initiale.

Merci par avance.
Posté le 24 novembre 2005 - 18:48
Salut

Alors là, j'ai peur d'avoir un problème de WAF
(voir http://www.wordspy.com/words/wifeacceptancefactor.asp).

Je veux bien donner un conseil par-ci, par-là, mais je vais pas me
lancer dans l'assistance personnalisée. Désolé.

--
Ciao
Pat Biker
http://aaa.windev.free.fr/


On Thu, 24 Nov 2005 16:32:49 +0100, "Pampi" <Pampi@wanadoo.fr> wrote:


Merci pour ta réponse.

C'est exactement ce que je fais ... recalculer les largeurs par la règle de trois , 3 images hors-écran ... Je ne comprends pas.

Est-ce que je pourrais t'envoyer mon projet (que la fenêtre et le code concernés par ma question) pour que tu voies ce que j'ai mal fait (à l'adresse sur ton site ou une autre ...) ?

Je te remercie déjà pour ton aide.

Bonne soirée.

Pampi

PS si tu es OK, je te l'enverrai demain matin, je dois partir ...
Posté le 25 novembre 2005 - 08:44
Je suis désolé, enthousiasmé par tes compétences en matière de gestion d'images je me suis emporté ....

Alors juste si tu peux me dire ce qui ne va pas ou ce qui me manque dans le code ci-dessous ça me débloquerait bien la situation .... Si j'abuse, n'hésite pas à me le dire, je comprendrais ....

Merci encore et bonne journée.

Pampi

==========================================================
La photo qui me sert de test (nomimage) a pour caractéristiques :
- largeur = 2560
- hauteur = 1920
- résolution horizontale = 300
- résolution verticale = 300

PHOTO1 est un champ image qui a pour caractéristiques :
- largeur = 100
- hauteur = 100
- Mode d'affichage = Homothétique étendu centré
==========================================================

nomimage est une chaîne
repdefaut est une chaîne
InfoImage est une chaîne
Largeur est un entier
Hauteur est un entier
chemin est une chaîne

repdefaut = "C:\"

nomimage = gsSélectionnerImage(repdefaut, "Fichier.JPEG", "Sélectionner une image", ...
"JPG (*.JPG)"+ TAB + "*.jpg" + RC + "JPEG (*.JPEG)"+TAB+".jpeg")

PHOTO1..Valeur = nomimage

// Récupération des caractéristiques de l'image
InfoImage = InfoBitmap (nomimage)
Largeur = Val(ExtraitChaîne(InfoImage, 2))
Hauteur = Val(ExtraitChaîne(InfoImage, 3))

// Copie de l'image dans les champs image hors écran
// image 1 = largeur 150 et mode d'affichage HQ+ Homothétique étendu centré
// image 2 = largeur 800 et mode d'affichage HQ+ Homothétique étendu centré
// image 3 = largeur 1024 et mode d'affichage HQ+ Homothétique étendu centré
dCopieImage("PHOTO1", Image1, copieSrcCopie)
dCopieImage("PHOTO1", Image2, copieSrcCopie)
dCopieImage("PHOTO1", Image3, copieSrcCopie)

// On calcule la largeur des photos A, B et C 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(repdefaut)+"A.JPEG")
dSauveImageJPEG(Image2,ComplèteRep(repdefaut)+"B.JPEG")
dSauveImageJPEG(Image3,ComplèteRep(repdefaut)+"C.JPEG")

// La photo stockée pour affichage à l'écran est la A
chemin = ComplèteRep(repdefaut)+"A.JPEG"

RENVOYER chemin