Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASSES POUR RECUPERER DES INFOS SUR LES FICHIERS BMP,GIF,PNG,JPG,AVI,MP3


Information sur la source

Catégorie :Fichier / Disque Classé sous : tag, avi, mp3, image, classe Niveau : Débutant Date de création : 14/01/2007 Vu / téléchargé: 5 943 / 779

Note :
6,67 / 10 - par 3 personnes
6,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Voilà des classes pour récupérer des infos sur des images (jpeg, png, gif et bmp), des musiques (mp3, tag v1 uniquement) et des vidéos (fichiers avi). Code ultra-commenté.

Méthodes de récupération des infos :
-mp3 ==> lecture dans le fichier
-images ==> lecture dans le fichier
-videos ==> APIs windows

Infos récupérables :

Video :
-Fichier
-Largeur
-Hauteur
-Frames
-Rate
-Scale
-Stream
-Débit max
-Type
-Durée
-Streams modifiés
-Images par secondes
-Heures
-Minutes
-Secondes

Images :
-type
-hauteur
-largeur

mp3 :
-Album
-Artiste
-Commentaire
-Genre
-Titre
-Numéro de piste
-Année


Pas grand grand chose à apprendre dans ces lignes de code, ci se n'est l'utilisation des APIs citées dessous, la lecture dans un fichier et l'utilisation des classes.
 

Source

  • Un exemple très clair dans le *.zip pour utiliser toutes les classes.
  • APIS utilisées :
  • '-----------------------------------------------
  • Private Declare Function AVIFileOpen Lib "avifil32" Alias "AVIFileOpenA" (ppfile As Long, ByVal szFile As String, ByVal mode As Long, pclsidHandler As Any) As Long
  • Private Declare Function AVIFileRelease Lib "avifil32" (ByVal pfile As Long) As Long
  • Private Declare Function AVIFileInfo Lib "avifil32" Alias "AVIFileInfoA" (ByVal pfile As Long, pfi As AVIFileInfo, ByVal lSize As Long) As Long
  • Private Declare Sub AVIFileInit Lib "avifil32" ()
  • Private Declare Sub AVIFileExit Lib "avifil32" ()
Un exemple très clair dans le *.zip pour utiliser toutes les classes.

APIS utilisées :


'-----------------------------------------------
Private Declare Function AVIFileOpen Lib "avifil32" Alias "AVIFileOpenA" (ppfile As Long, ByVal szFile As String, ByVal mode As Long, pclsidHandler As Any) As Long
Private Declare Function AVIFileRelease Lib "avifil32" (ByVal pfile As Long) As Long
Private Declare Function AVIFileInfo Lib "avifil32" Alias "AVIFileInfoA" (ByVal pfile As Long, pfi As AVIFileInfo, ByVal lSize As Long) As Long
Private Declare Sub AVIFileInit Lib "avifil32" ()
Private Declare Sub AVIFileExit Lib "avifil32" ()

Conclusion

NOTE 0 : j'ai récupéré sur le net les adresses des octets pour la lecture des infos (pour les images). Par conséquent, j'ai gardé la procédure allant avec ainsi que deux sous fonctions de conversion ; ces lignes de code NE SONT PAS DE MOI (mais je sais pas de qui...)
Voir les commentaires dans ma source.

NOTE 1 : récupération des tags des mp3 V1 ==> récupère en FIN DE FICHIER ==> l'année est parfois tronquée d'un carcactère pour certains fichiers

NOTE 2 : Commentez et notez svp ;)

NOTE 3 : On peut récupérer beaucoup plus d'infos sur ces fichiers par d'autres méthodes, voir les sources de ShareVB pour çà. Mais là, l'avantage est que c'est léger et rapide.

NOTE 4 : Fichiers sources qui apparaitront bientot dans un programme de renommage de fichiers de manière massive, qui lui même apparaitra plus tard comme outils dans un éditeur hexa. Je subdivise mes sources pour faciliter le partage et la recherche d'informations.

Merci, @+
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Renfield le 15/01/2007 09:15:25 administrateur CS

Sympathique...

Et un amateur de NightWish, un ^^

signaler à un administrateur
Commentaire de zavier666 le 15/01/2007 16:58:47

Très bonne source et pratique en +, je mets 10/10

slts!!!!!
____________________________________________________
Toujours + d'API   =>  API @ la loupe
http://xav.prog.power.free.fr

signaler à un administrateur
Commentaire de violent_ken le 15/01/2007 17:56:34

renfield ==> lol, oui ;)

zavier666 ==> merci pour la note ^^

@+

signaler à un administrateur
Commentaire de Renfield le 16/01/2007 09:52:05 administrateur CS

tiens, violent_ken, j'ai mis a dispo une source que j'avais depuis un moment...

http://www.vbfrance.com/codes/INFOS-SUR-VIDEOS-CODECS_41133.aspx

un peu le même genre, sauf que je regarde surtout les codecs...

signaler à un administrateur
Commentaire de violent_ken le 16/01/2007 13:00:27

Oh yeah, merci bcp pour l'info, je vais aller voir de ce pas ;)
@+

signaler à un administrateur
Commentaire de dead33 le 14/02/2007 17:44:26

bonjour

bravo pour cette source.
- est-ce-que tu n'a pas un code pour retager les mp3
a+

signaler à un administrateur
Commentaire de violent_ken le 14/02/2007 17:47:54

Salut, merci pour le commentaire.

Moi personnellement je n'ai rien codé pour changer les tags, mais je te conseille cette source :
http://www.vbfrance.com/codes/YOMMMP3TAG-V2-EDITEUR-TAGV1-V2-V2-POUR-MP3_24252.aspx

@+

signaler à un administrateur
Commentaire de titicar le 12/07/2007 19:58:14

Merci à toi. En ce qui me concerne, c'est la dimension d'un JPEG qui m'intéresse... Même si j'ai du mal à comprendre le code.
Par contre, j'ai une image JPG qui a fait planter ton code au niveau de GetImageInfos() lié à BEWord(position). J'ai donc très légèrement modifié le code comme suit:
(le résultat donne simplement une dimension nulle et évite le plantage dans ce cas particulier)

'---------------------------------------------
GetImageInfos():
'---------------------------------------------
Public Sub GetImageInfos()
Dim i As Long
Dim lFile As Long
Dim lngWidth As Long
Dim lngHeight As Long
Dim tType As IMAGE_EXTENSION_TYPE
Dim lngSize As Long
Dim bDimNotFound As Boolean 'titicar

    On Local Error GoTo ErrGestion

    'par défaut
    lngWidth = 0
    lngHeight = 0
    tType = lUNKNOWN
    
    'ouverture du fichier en lecture binaire
    lFile = FreeFile
    Open sFile For Binary Access Read As #lFile
    
    lngSize = LOF(lFile)
    ReDim bytBuffer(lngSize)  'dimensionne à la taille du fichier
    
    'récupère le buffer
    Get #lFile, 1, bytBuffer()
    
    'vérifie le header ==> PNG
    If bytBuffer(0) = 137 And bytBuffer(1) = 80 And bytBuffer(2) = 78 Then
        tType = lPNG
        lngWidth = BEWord(18)
        lngHeight = BEWord(22)
    End If
    'vérifie le header ==> GIF
    If bytBuffer(0) = 71 And bytBuffer(1) = 73 And bytBuffer(2) = 70 Then
        tType = lGIF
        lngWidth = LEWord(6)
        lngHeight = LEWord(8)
    End If
    'vérifie le header ==> BMP
    If bytBuffer(0) = 66 And bytBuffer(1) = 77 Then
        tType = lBMP
        lngWidth = LEWord(18)
        lngHeight = LEWord(22)
    End If
    'vérifie le header ==> JPG
    If tType = lUNKNOWN Then
        'rien de particulier à dire, on tritouille les bytes à la recherche des infos
        'bloc de fonctions trouvé sur le net, mais je ne sais plus où -__-'
        Dim lPos As Long
        Do
            If (bytBuffer(lPos) = &HFF And bytBuffer(lPos + 1) = &HD8 And bytBuffer(lPos + 2) = &HFF) _
            Or (lPos >= lngSize - 10) Then Exit Do
            lPos = lPos + 1
        Loop
        lPos = lPos + 2
        If lPos >= lngSize - 10 Then Exit Sub
        Do
            Do
                If bytBuffer(lPos) = &HFF And bytBuffer(lPos + 1) <> &HFF Then Exit Do
                lPos = lPos + 1
                If lPos >= lngSize - 10 Then Exit Sub
            Loop
            lPos = lPos + 1
            If (bytBuffer(lPos) >= &HC0) And (bytBuffer(lPos) <= &HC3) Then Exit Do
            lPos = lPos + BEWord(lPos + 1)
            If lPos >= lngSize - 10 Then Exit Sub
            If lPos < 0 Then 'titicar
                bDimNotFound = True 'titicar
                Exit Do 'titicar
            End If 'titicar
        Loop
        tType = lJPG
        If bDimNotFound = False Then 'titicar
            lngHeight = BEWord(lPos + 4)
            lngWidth = BEWord(lPos + 6)
        End If 'titicar
    End If
    
    'affectation des valeurs aux variables publiques de la classe
    Me.lHeight = lngHeight
    Me.lWidth = lngWidth
    Me.sType = ImageType2String(tType)
    
ErrGestion:

    'vide le tableau (buffer)
    ReDim bytBuffer(0)
    'referme le fichier
    Close #lFile
End Sub

'---------------------------------------------
BEWord(position):
'---------------------------------------------
Private Function BEWord(position As Long) As Long
Dim x1 As WordBytes
Dim x2 As WordWrapper
    x1.byte1 = bytBuffer(position + 1)
    x1.byte2 = bytBuffer(position)
    LSet x2 = x1
    BEWord = x2.Value
    'titicar: _
    S'il y a un défaut dans le fichier image, il peut arriver que x2.value soit INFERIEUR à Zéro, _
    ce qui est théoriquement impossible (j'ai un JPG avec ce problème). _
    On fait donc ce test, sinon le programme passe dans une boucle sans fin, et donc plantage. _
    Après quoi, dans la procédure appelante, il faut tester si la valeur final BEWord (dans notre cas, _
    associé à position) est <0, et réagir en conséquence, ce qui est fait dans GetImageInfos(). _
    Libre à chacun d'ajouter une nouvelle propriété du genre ImageNonValide dans cette classe.
    If BEWord < 0 Then BEWord = -position - 1 'Pour être sûr que le résultat soit négatif dans GetImageInfos()'titicar
End Function

signaler à un administrateur
Commentaire de titicar le 28/05/2008 23:44:04 8/10

Dommage qu'il n'y ait pas plus de commentaires sur cette source pourtant utile, même si l'on est pas obligé de tout prendre.

Toujours concernant la dimension d'un JPEG, j'ai été confronté à une autre erreur, encore due à une image 'incorrecte'.
Dans la procédure GetImageInfos(), il y a la ligne suivante:
If lPos >= lngSize - 10 Then Exit Sub
Le 'exit sub' est mal employé car le fichier image a déjà été ouvert (Open sFile...) et n'est pas refermé.
Il faut remplacer cette ligne par:
If lPos >= lngSize - 10 Then GoTo ErrGestion 'Faut refermer ce fichier déjà ouvert
car l'étiquette ErrGestion referme ce fichier image (Close #lFile).

Mais pour les curieux, faut préciser que la procédure fonctionne trés bien pour des images 'correctes'.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

recherche de fichier dans une filebox [ par Jejedev59 ] Voila g fait un player mp3 et avi mais dans ma filebox ya tout les fichier qui s affiche et j aimerai que sa soit que les .mp3 et les .avi comment je Connaitre la durée d'un fichier MP3,AVI, etc sans API ? Oui c'est possible !! [ par Cisco ] Simple ... Créer un Ctrl MediaPlayer Mettre dans Filename le nom du fichier choisi Mettre CurrentPosition=36000 (ou plus evidement..) comme ca WMP ira Tag ID3 d'un MP3 [ par MEGATRIX ] Comment tager un mp3 sur l'ID3et aussi si possible le lire?merci@++Megatrix Tag ID3 d'un MP3 [ par MEGATRIX ] Comment tager un mp3 sur ID3et le lire si possible?merci@++Megatrix Comment modifier tag MP3 (écrire ds fichier mp3) [ par maxilly ] Help !Pas possible de trouver source pour modifier/écrire les tag idv ds fichier MP3.Les sources pour lire ces tag sont profusions... en binaire, mais PLAYER DIVX AVI MPG MP3 WAV MID...+fonction autorun [ par NumZ ] salutje vous propose mon ptit dernier ici.donc le titre en dis bcp je vous laisse découvrir dans le zip tout est compris vous avez juste a le dl<a hre Tag Mp3 [ par MatthieuFourcade ] Bonjour j'aimerai savoir si quelqu'un pouvez me filer ou m'indiquer un code simple pour connaitre le genre d'un mp3.avec id3 1.0 et 1.1(j'ai deja le c MP3 Tag [ par gilles916 ] Bonjour!Est-ce que quelqu'un pourrait me dire comment saisir la durée d'un MP3 à l'aide de Visual Basic! Merci TAG MP3 SVP JE NE COMPRENDS RIEN !!! [ par z980x ] Quelqu'un peut t-il svp me dire comment LIRE des tags de fichiers mp3...Seulement les trucs les plus communs...JE NE COMPRENDS ABSOLUMENT RIEN AUX TRU TAG MP3 [ par cyborg289 ] Est ce que qqun aurait la gentillesse de m'expliquer comment récupérer le tag du MP3 parce que j'ai lut les ources d'un certain nombre de personnes ma


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,123 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.