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

Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 25 févr. 2007 à 13:40 - Dernière réponse : mautone32 11 Messages postés jeudi 21 juillet 2005Date d'inscription 12 août 2008 Dernière intervention
- 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
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 26 févr. 2007 à 10:21
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

Merci Molenn 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de Molenn
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 25 févr. 2007 à 14:16
0
Merci
Bonjour,
Parce que Filelen ne te suffit pas ?
Commenter la réponse de jmfmarques
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 25 févr. 2007 à 14:44
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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 25 févr. 2007 à 19:26
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
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 26 févr. 2007 à 11:02
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
mautone32 11 Messages postés jeudi 21 juillet 2005Date d'inscription 12 août 2008 Dernière intervention - 23 juil. 2008 à 17:10
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.