Page 1 sur 1

[..] Récupérer la taille d'une image : bug

Posté : mar. 26 août 2014 14:33
par franco
Salut.

Je souhaite pouvoir récupérer les dimensions d'une image : Largeur et hauteur.


J'ai recherché, et j'ai trouvé ceci : http://www.autoitscript.fr/forum/viewto ... 3455#p3455

Sur un outil, j'ai un petit souci.

Donc je décide de faire un code plus simple : j'ai le même souci.

Voici le code utilisé :
► Afficher le textecode
Voici les dimensions de la première image ($picture1) :
Largeur = 3456 px
Hauteur = 4608 px

Voici les dimensions de la deuxième image ($picture2) :
Largeur = 4608 px
Hauteur = 3456 px

Le script me sort
  • Pour $picture1 : largeur = 4608 px et Hauteur = 3456 px
  • Pour $picture2 : largeur = 4608 px et Hauteur = 3456 px
Souci : Il me sort les mêmes dimensions.

J'ai l'impression que la plus grosse valeur est donnée par la variable liée à _GDIPlus_ImageGetWidth.
Alors qu'il se peut que la hauteur soit plus grande que la largeur.


Une idée de ce schmilblick ? :mrgreen:

Merci à tous.
@bientôt! ;)


++

Re: [..] Récupérer la taille d'une image : bug

Posté : mar. 26 août 2014 14:49
par mikell
Hum je viens de tester ton code et il marche correctement
► Afficher le texte

Re: [..] Récupérer la taille d'une image : bug

Posté : jeu. 28 août 2014 11:07
par franco
Salut.

Tu vas pouvoir (si tu le veux ^^) m'enlever un doute.

En fait, il s'agit de photos prises par mon appareil photo numérique.
=> Une horizontalement : 4068 de largeur x 3456 de hauteur
=> Une verticalement : 3456 de largeur x 4068 de hauteur

Et bien avec ce code, j'obtiens pour chacune de ces images, les mêmes dimensions.


J'ai créé deux images ayant comme dimensions :
=> 400 de la largeur et 300 de hauteur
=> 300 de largeur et 400 de hauteur

Et le code fonctionne.

Donc je peux en déduire (peut-être à tort), que les images trop "grandes" ne passent pas avec ce code.


J'ai hébergé les photos, au cas où quelqu'un voudrait les dimensions lui-même.
http://puu.sh/bbdeE/e3a120661a.JPG
http://puu.sh/bbdh4/e947cbb664.JPG


Sinon, ce n'est pas grave, juste que cela m'aurait arrangé de trouver le schmiblick ^^


Edit :
J'ai refait le code en analysant
-> les images créées (400*300 et 300*400)
-> les photos (4068*3456 et 3456*4068)
► Afficher le texte
Même souci.

Une image pour preuve :P
Image

Donc :
Les images créées passent.
Les images de mon APN non.

@+ et merci à tous.

Re: [..] Récupérer la taille d'une image : bug

Posté : jeu. 28 août 2014 11:27
par mikell
Testé avec tes 2 images, effectivement ça bugge
Mais si je prends l'image 1 et la pivote de 90° avec un éditeur, là ça marche
Conclusion : ce n'est pas une question de taille d'image, ça doit être une histoire de métadonnées

Edit
Et c'est logique, ton APN c'est pas parce que tu vas lui donner une position à 90° en prenant ton cliché que pour lui la largeur va devenir la hauteur :mrgreen:

Re: [..] Récupérer la taille d'une image : bug

Posté : jeu. 28 août 2014 11:54
par franco
Salut

AH bin mince. :lol:

Windows m'affiche les dimensions voulues.

Donc GDIPlus se base - en très gros ^^ - sur les métadonnées.


Je vais voir si je peux pas trouver une alternative.



Merci à toi :D

Re: [..] Récupérer la taille d'une image : bug

Posté : jeu. 28 août 2014 12:10
par ani
Aucun bug rencontré
Meme windows retourne les valeur suivantes 4608x3456 (pour les deux images)

Comme l'a signalé mikell (c' du au 90°), on la pivote et hop on obtiend 3456-4608
Y a surement une methode pour savoir si l'image fut pivoté ou non (panoramique ou non ect)
visionne msdn :o

ps: dans ton code avec le hImg4 = _GDIPlus_ImageLoadFromFile($variable) t'a indiqué dcim1 au lieu du dcim2

voilàvoilà

edit: ton windows te retourne des valeurs differentes pour les deux images (celle posté ?) étrange

Re: [..] Récupérer la taille d'une image : bug

Posté : jeu. 28 août 2014 13:43
par franco
Salut.

En faisant propriétés sur l'image puis sur détails, je trouve effectivement des dimensions différentes pour les deux images citées.
En image : http://www.screencourier.com/image/vg96 ... 4jvp3z.jpg

Néanmoins, j'ai trouvé une alternative sur le forum anglais.
Ca me sort bien ce que windows me dit. :mrgreen:
http://www.autoitscript.com/forum/topic ... ntry764849

Je vais donc modifier un tantinet le code et me créer une fonction, à mettre dans une boucle for.
Car j'ai plusieurs images à traiter. ;)


Je reviendrais poster le tout. :)


++

Re: [..] Récupérer la taille d'une image : bug

Posté : jeu. 28 août 2014 14:12
par franco
Salut.

Ca fonctionne chez moi maintenant.

Voici le code fonctionnel - mais pas défintif :mrgreen:
► Afficher le textevoir le code
Et voilà :D

Je pense que je peux mettre en résolu.
Mais j'attends tout de même vos avis, car ils éclairent souvent ma lente terne. :P


@+ et merci :D

Re: [..] Récupérer la taille d'une image : bug

Posté : lun. 01 sept. 2014 22:51
par franco
Salut.

Juste une autre petite dernière (ou pas d'ailleurs :mrgreen: ) question...

=> Je sais qu'on peut :mrgreen: récupérer la position d'un contrôle.


Ma question : Peut-on récupérer les positions X et Y de la GUI elle-même ?

En effet, je cherche à "modifier" la taille de la GUI : ce que je sais faire. (merci Google ^^)
Mais tout en gardant la position de la GUI : donc, il me faut connaitre la position X et Y de cette dernière.

J'ai utilisé ControlGetPos : sans succès.


@+ et merci. :)

Re: [..] Récupérer la taille d'une image : bug

Posté : lun. 01 sept. 2014 23:47
par mikell
WinGetPos ? Image

Re: [..] Récupérer la taille d'une image : bug

Posté : mar. 02 sept. 2014 08:15
par franco
Salut.

J'ai essayé aussi.

La première fois que j'essaye : échec :D


je vazis retenter.

Merci et a+

Re: [..] Récupérer la taille d'une image : bug

Posté : mar. 02 sept. 2014 18:08
par franco
Salut.

En effet, ça fonctionne : je ne savais pas qu'on pouvait mettre directement le handle de la GUI.

En fait, la gui principal n'affiche pas tout.
Une fois appuyé sur le bouton, j'aimerais que la GUI s'aggrandisse.

Je pensais donc faire un WinMove simple : mais j'ai mal interprété la chose.


En effet, ça agrandit que la partie visible (et c'est logique).


Comment faire pour que la gui affiche le reste ?
En gros, que la hauteur évolue en faisant donc apparaitre le reste (la largeur n'évoluant pas).

Note : Je pense aussi que ça sera plus simple de créer une seconde interface. ^^


@+ et merci à toi et aux autres.

Re: [..] Récupérer la taille d'une image : bug

Posté : mar. 02 sept. 2014 18:27
par ani
Y aune autre fonction __WinAPI_GetWindowRect($hWnd)
Elle utilise une structure Rect, qui retourne = Left, Top, Right, Bottom,

Code : Tout sélectionner

#include <winapi.au3>
$a = GUICreate("",400,200,100,100)
GUISetState()
While 1
    $msg = GUIGetMsg()
    If $msg = -3 then 
        $p = _WinAPI_GetWindowRect($a)
         ConsoleWrite(DllStructGetData($p,1) & @LF)    ; X.
         ConsoleWrite(DllStructGetData($p,2) & @LF)    ; Y.
         ConsoleWrite(DllStructGetData($p,3) & @LF)
         ConsoleWrite(DllStructGetData($p,4) & @LF)
         Exit
     EndIf
WEnd

guidelete($a)
ENfin y a d'autre solution comme _WinAPI_GetWindowPlacement


edit:arf t'a répliqué.