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

Résolu
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 25 févr. 2007 à 13:40
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

6 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
26 févr. 2007 à 10:21
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
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 févr. 2007 à 19:26
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
1
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 févr. 2007 à 14:16
Bonjour,
Parce que Filelen ne te suffit pas ?
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 févr. 2007 à 14:44
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 #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 févr. 2007 à 11:02
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)
0
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
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...
0
Rejoignez-nous