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

Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
- - Dernière réponse : mautone32
Messages postés
11
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
12 août 2008
- 23 juil. 2008 à 17:10
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
4
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 153 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Molenn
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Bonjour,
Parce que Filelen ne te suffit pas ?
Commenter la réponse de jmfmarques
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
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 #
Commenter la réponse de cs_casy
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
20
0
Merci
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
Commenter la réponse de PCPT
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
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)
Commenter la réponse de jmfmarques
Messages postés
11
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
12 août 2008
0
Merci
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...
Commenter la réponse de mautone32