[VB] Vérifier image

Résolu
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 - 12 juil. 2007 à 09:22
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 - 12 juil. 2007 à 11:12
Bonjour,

j'aimerais savoir s'il est possible de connaître l'état d'une image(corrompue ou valide) : je dois aller chercher une image dans la BdD et si pour une raison quelconque la liaison avec la BdD est rompue ou alors il y a un autre problème, y a-t-il un moyen de savoir si l'image est abîmée ? Je vous demande ça parce qu'hier j'ai trafiqué une image (bloc-notes : j'ai enlevé des lignes), lorsque je la regardais avec "Aperçu des images et télécopies Windows" yavait marqué "Aucun aperçu n'est disponible" et quand j'ai lancé mon appli VB pour afficher l'image, VB a complètement planté
Merci

14 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 juil. 2007 à 09:31
Salut,

voici une solution que je te propose, y'en aura certainement d'autres :

Option Explicit

Private Sub Form_Load()
test
End Sub

Sub test()
    Dim chemin As String: chemin = "C:\documents and
settings\mortalino\Bureau\Test.jpg"

On Error Resume Next
Me.Picture1.Picture = LoadPicture(chemin)
If Err.Number = 481 Then MsgBox "Image corrompue": Err.Clear: Exit Sub
On Error GoTo 0

' instruction si
l'image est bonne

End Sub
~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 juil. 2007 à 10:22
autre possibilité de gestion d'erreur :

Option Explicit

Private Sub Form_Load()
test
End Sub

Sub test()
    Dim chemin As String: chemin = "C:\documents and settings\mortalino\Bureau\Test.jpg"

On Error GoTo FIN
Me.Picture1.Picture = LoadPicture(chemin)

' instruction si l'image est bonne
Exit Sub
FIN: MsgBox "Image corrompue"
End Sub

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juil. 2007 à 09:28
tu peux par exemple faire un Checksum (ou un hash) pour valider que les données de ta base sont bien celles récupérées...

mais je pense que ADO te préviendra, si la requete a eu des soucis de liaison ou autre...

vu que tu as une image, tu peux tenter une gestion d'erreurs autour d'un LoadPicture...
0
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
12 juil. 2007 à 09:53
ça avait l'air pas mal ta solution, j'ai testé, ça passe bien dans On error resume next, ça n'affiche rien (ok puisque l'image est nase) mais par contre ça ne va pas dans msgbox...
pour Renfield, je ne connais pas checksum ou le hash, je vais regarder mais j'aimerais si possible ne pas vérifier que la liaison avec la BDD, j'aimerais vraiment vérifier l'image
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 juil. 2007 à 09:57
pour le msgbox, c'est certainement parce que le n° de l'erreur n'est pas le bon. A tout les coups, tu as une autre erreur, qu'il te faut trouver :

On Error Resume Next
Me.Picture1.Picture = LoadPicture(chemin)

'ici :
MsgBox Err.NumBer

'remplace 481 par le bon N°
If Err.Number = 481 Then MsgBox "Image corrompue": Err.Clear: Exit Sub
On Error GoTo 0

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
12 juil. 2007 à 10:02
c'est ce que j'étais en train de faire et c'est bizarre le err.number donne 0, j'ai pas trouvé ce que c'était comme erreur, c'est possible ça ?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 juil. 2007 à 10:08
Beh oui, c'est que VB ne détecte aucune erreur lors du chargement de l'image.
Pour l'exemple j'ai pris un fichier texte, et j'ai mis 'extension jpg.

là je viiens de supprimer une ligne dans un fichier image, et l'erreur est bien connue de vb, et c'est donc la 481

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
12 juil. 2007 à 10:18
si c'est que VB ne détecte aucune erreur, je n'explique pas le fait que VB aille jusqu'à "If err.number=..", pourtant j'ai bien vérifié et refais le test plusieurs fois : j'ai ouvert mon image .gif avec le bloc-notes, j'ai supprimé plusieurs lignes, aucun aperçu n'est disponible avec l'aperçu de Windows, et voilà...ou alors je crois que j'ai pas compris comment ça marche la gestion d'erreurs..allez révisions !
0
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
12 juil. 2007 à 10:27
ouais ça y est j'ai essayé ça mais alors c'est bien ce que je pensais, VB capte pas du tout que mon fichier est mauvais, il me l'affiche quand même avec des parties toutes noires..
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juil. 2007 à 10:31
on pourrait en faire une fonction, plus simple à réutiliser...

de tête, je dirai :

Public Function IsPictureValid(Byref vsFileName As String) As Boolean
On Error Resume Next
LoadPicture vsFileName
IsPictureValid (Err.Number 0)
End Function
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juil. 2007 à 10:33
si vb te l'affiche, c'est qu'il n'est pas mauvais... c'est toi qui juge qu'il l'est...

tant que sémantiquement, le fichier est correct et qu'il peut être chargé.....

seule solution pour l'ordi de vérifier l'intégrité des donnée, le checksum.
0
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
12 juil. 2007 à 10:57
alors d'après ce que j'ai compris le checksum ça sert à vérifier que mon image dans la BDD est la même que celle que j'ai récupéré..pas mal, mais le fichier peut déjà être altéré dans la BDD ! Et là comment je fais ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juil. 2007 à 11:01
tu serai pas un peu parano sur les bords :p

a l'ajout dans ta base :

calcule le checksum avant l'upload vers la base, envoie l'image dans la base
redemande l'image de la base, recalcule le checksum et compare... s'il y a altération....
0
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
12 juil. 2007 à 11:12
un peu parano ouais ^^
ok on va voir avec la solution que tu me donnes
merci
0
Rejoignez-nous