Récupérer l'attribut "Dimensions" d'une image [Résolu]

Signaler
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
-
Messages postés
11
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
12 août 2008
-
Bonjour,


Petite question (et donc petite réponse ? ).
J'utilise une FileListBox pour récupérer la liste des fichiers images contenus dans un répertoire, aucun souci.
Je souhaiterai afficher dans un label la dimension du fichier sélectionné.

La sélection, pas de souci.
Pour les infos d'attributs de mon objet, je pensais utiliser un objet FSO (dans le genre de code que l'on peut trouver dans cette source : http://www.vbfrance.com/codes/CREER-FICHIER-TEXTE-AVEC-LISTE-TOUS-FICHIERS-REPERTOIRE_5430.aspx)
Rien de bien compliqué en soi, mais là, petit souci :
Il y a comme propriété de l'objet .DateCreated, etc ... Mais pas les dimensions de mon objet ! (le .Size est le poids de l'objet en fait).
Dans l'explorateur XP, tout bêtement, je peux l'afficher avec un simple clic droit.
Vous savez si en VB6, je peux utiliser un objet qui me permettrait de récupérer simplement cette dimension ?

J'ai trouvé sur VBFrance une autre source, http://www.vbfrance.com/codes/RECUPERER-DIMENSIONS-IMAGE-JPEG-PSD-PHOTOSHOP-SANS-OCX_39792.aspx, qui me permet de récupérer ces données pour un fichier .jpeg. Ca fonctionne très bien, mais je me demandais s'il existait la même chose pour récupérer les infos quelque soit le type de fichier (ça ne fonctionne pas pour un .gif par ex).
Je ne me sens pas capable encore de modifier l'API ^^

Je suppose que si l'explorateur le fait, il doit bien avoir une .dll ou une API quelconque que je puisse utiliser.

D'avance merci.

Molenn

6 réponses

Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
615490
jmfmarques
 : FileLen ne correspond pas parce que, je ne connaissais pas cette fonction . Mais en plus, ça me remonte en fait le poids du fichier, en octet, et ce que je cherche à obtenir, ce sont les dimensions d'un fichier image (du genre : Dimension 800 x 600)

=333139 casy : Je ne me sens pas encore de me plonger dans des trucs aussi compliqués pour mon petite cerveau ^^

 PCPT : Je n'ai vu ta procédure que ce matin, elle semble convenir à ce que je voulais obtenir puisque je me suis débrouillé en bidouillant un truc qui y ressemble, et qui n'est pas forcément très propre, mais bon ^^
J'ai en fait mis une picturebox en invisible sur ma feuille, et en autosize. J'ai passé je ne sais plus quelle propriété en Pixel plutôt que Twip. Et hop, je précharge d'abord mon image dans le picturebox et avec les propriété ScaleWidth et ScaleHeight (que j'ai découvert hier dans la journée ... Je devrais utiliser des PictureBox beaucoup plus souvent  ), j'ai les infos qu'il me faut. Ca ne me pose pas de réels souvis parceque je ne veux les dimensions que d'une image que j'affiche, pas comme dans un explorateur ou j'aurais les dimensions de tout un ensemble de fichier.

Enfin, obligé de passer par là pour gérer mon affichage, tsss ... Vous ne connaitriez pas un objet qui possède à la fois les propriétés ScaleWidth et ScaleHeight d'un PictureBox, et la propriété Strech d'une ImageBox ?

En tous cas, merci pour les pistes et à une prochaine question !

Molenn
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
salut,

euh.. tu veux juste les dimensions?

si oui, voilà une proc sur mesure ;)

Option Explicit

Private Sub Form_Load()
    Dim lWidth&, lHeight&
    Call GetPicSize(Me, "C:\tmp1.jpg", lWidth, lHeight, vbPixels)
    MsgBox lWidth & " x  " & lHeight
    
    Unload Me
End Sub

Sub GetPicSize(Frm As Form, sPath As String, ByRef lWidth As Long, ByRef lHeight As Long, Optional iScale As Integer = vbTwips)
    Dim ObjStd As New StdPicture
    Set ObjStd = LoadPicture(sPath)

    lWidth = Me.ScaleX(ObjStd.Width, vbHimetric,
iScale)
    lHeight = Me.ScaleY(ObjStd.Height, vbHimetric,
iScale)
    Set ObjStd = Nothing
End Sub

<small>Coloration
syntaxique automatique [AFCK] </small>
       
++
PCPT  [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,
Parce que Filelen ne te suffit pas ?
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Peut-etre que ce code te donnerais des idées -->
http://www.vbfrance.com/codes/CLSGIFINFO-CLASSE-POUR-GIF-ANIMES_36882.aspx

sinon regarde sur ce site : http://edais.mvps.org/Code/Libraries/index.html, à défaut d'y trouver exactement ce que tu cherche, tu trouveras du code pour chaque format, ainsi que le format de l'header de chaque type de fichier.

Tu peux y apprendre par exmple que les dimentions d'un gif se trouve sur le 7 et 8ème octet pour la largeur et 9 et 10 ème octet pour la hauteur.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour Molenn;

Non, un tel objet n'existe pas

Existe par contre la méthode PaintPicture qui te permet de faire celà. Il te faudra simplement l'accompagner d'un petit calcul arithmétique pour conserver à ton image ses proportions (hauteur/largeur)
Messages postés
11
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
12 août 2008

Désolé de réouvrir une ancienne discussion, mais je suis obligé car il y aune information qui m'est très intéressante.

Par rapport au bout de code :

lWidth = Me.ScaleX(ObjStd.Width, vbHimetric, iScale)
lHeight = Me.ScaleY(ObjStd.Height, vbHimetric, iScale)

"vbHimetric" et "iScale", ils representent quoi exactement ?? Car loorsque je lance cette macro, il me dit qu'il ne reconnait pas ces variables..

Merci de me donner plus d'info si possible SVP...