pascal16m
Messages postés73Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention12 novembre 2020 7 nov. 2011 à 13:09
Merci, moi aussi je l'avais fait dans le but d'apprendre.
Avec VB6, on peut lire la taille d'une image, mais pour cela, il doit d'abord la charger, ce qui est très lent.
Ce bout de code m'a permis ensuite de faire un comparateur sans ouverture d'image. Puis un logiciel de classement d'image. Le classeur incorporait une routine qui copiait les images impossibles à ouvrir dans un répertoire. Les images récalcitrantes peuvent être parfois ouverte avec un logiciel tierce d'édition, on modifie un petit truc, on enregistre et l'image est bonne.
Avec VB10, le chargement d'une image est rapide, donc le code ne permet plus vraiment d'accélérer.
patriceB2
Messages postés10Date d'inscriptionmardi 5 janvier 2010StatutMembreDernière intervention17 novembre 2011 7 nov. 2011 à 08:52
Je disposais d'une image que LOADPICTURE ne pouvait lire. Impossible aussi de gérér une erreur (plantage complet de VB6). Ce programme détecte que l'image a un problème!! Bravo donc! Bravo aussi à la démarche de ce genre de recherche pour comprendre, plutôt que d'utiliser des utilitaires tout fait, même s'ils sont plus simples. Il est bon de comprendre aussi....
pascal16m
Messages postés73Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention12 novembre 2020 25 nov. 2007 à 11:56
Merci Florian,
le but de ce code était de voir un peu comment était fait le Jpeg.
en rechercanht sur internet, j'avais trouvé pas mal de dossiers assez épais sur la structure jpeg.
J'avais mi ce bout de code pour en faire un résumé.
La boucle 1 à 10 est pas terrible, mais ça évite d'avoir plus de ligne de code pour gérer les images HS (et c'est pas rare sur les images téléchargées) que pour afficher 2 chiffres.
pour les fonctions :
Label1.Caption = "Hauteur : " & LoadPicture(chemin).Height
Label2.Caption = "Largeur : " & LoadPicture(chemin).Width
J'ai pas trop pigé pourquoi je ne retombais pas sur la taille en twips, mais c'est bien ça en théorie. Sauf que pour afficher deux nombre, il charge deux fois l'image en mémoire. C'est tres long, surtout sur de grandes images.
Vu que windows affiche les excifs, il doit y avoir des fonctions API rapides pour le faire rapidement.
L'avantage avec ce bout de code, c'est de ne lire que le début de l'image et une seule fois et c'est rapide.
TFlorian
Messages postés194Date d'inscriptiondimanche 3 mars 2002StatutMembreDernière intervention19 décembre 20053 25 nov. 2007 à 01:12
GÉNIAL !
J'ai réussi à récupérer des images suite à un formatage d'un disque...
Après la récupération des fichiers les photos mes images ne faisaient plus que 160 x 120 au lieu de 1600 x 1200 ..
Grâce a ton code j'ai compris la structure du JPEG et j'ai réussi à le décortiquer pour récupérer mes images HD ..
(Lorsque le fichier n'avait pas été trop détruit dut à une fragmentation trop importante du disque.. )
D'un point de vue perf, je préfère ta méthode que les méthodes toutes faire car on ne lit qu'une seule foi le fichier (sur le disque) alors que les APIs des Windows comme on les appels plusieurs fois, font plusieurs accès disque
Encore merci, et bonne prog a tous ;-)
TFlorian
pascal16m
Messages postés73Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention12 novembre 2020 4 avril 2006 à 14:36
Ca c'est du deterrage
quand une photo est redimentionnée lors de son ouverture pour loger dans un controle picture ou image, il me semble qu'il te donne la taille de l'image redimentionnée.
Je pense qu'il existe une fonction toute faite qui donne toujours la bonne taille, mais je la connais pas.
J'ai quelques images où il y a un décalage d'1 ou 2 octets à l'intérieur du fichier, je sais pas pourquoi, et la fonction se trompe
sinon, lequel des deux se trompe ?
cs_Sator2
Messages postés137Date d'inscriptionsamedi 11 septembre 2004StatutMembreDernière intervention10 septembre 2006 4 avril 2006 à 06:29
Salut tout le monde ... petite question...
si on fait: (demande 2 labels et une image....)
Label1.Caption = "Hauteur : " & LoadPicture(chemin).Height
Label2.Caption = "Largeur : " & LoadPicture(chemin).Width
N'arrivons-nous pas à la même chose???
@+ Sator
pascal16m
Messages postés73Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention12 novembre 2020 4 nov. 2003 à 22:05
là, je sais pas.
mais en lui indiquent que c'est un pointeur sur une image jpeg, ça doit marcher.
Le jpeg est compressé, c'est pas un simple tableau RGB comme le BMP.
cs_Snoow
Messages postés4Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention 4 novembre 2003 4 nov. 2003 à 15:01
Sympa ce bout de code !
Petite question : l'image qui est contenue dans #5 , est-ce qu'il est possible de l'afficher directement dans un PictureBox ou dans un objet Image ?
(par ce que mon image provient d'un flux, et je ne souhaite pas l'écrire sur le disque : trop lent)
pascal16m
Messages postés73Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention12 novembre 2020 19 sept. 2003 à 22:04
c'est marqué dans le titre, c'est la taille d'une image d'un fichier JPEG, les dimensions hauteur et largeur de l'image qu'il renferme quoi.
z980x
Messages postés897Date d'inscriptionjeudi 6 juin 2002StatutMembreDernière intervention26 juillet 20072 19 sept. 2003 à 21:23
J'ai pas tres bien compris, tu veux connaitre la taille du fichier jpeg? (en octets?)
7 nov. 2011 à 13:09
Avec VB6, on peut lire la taille d'une image, mais pour cela, il doit d'abord la charger, ce qui est très lent.
Ce bout de code m'a permis ensuite de faire un comparateur sans ouverture d'image. Puis un logiciel de classement d'image. Le classeur incorporait une routine qui copiait les images impossibles à ouvrir dans un répertoire. Les images récalcitrantes peuvent être parfois ouverte avec un logiciel tierce d'édition, on modifie un petit truc, on enregistre et l'image est bonne.
Avec VB10, le chargement d'une image est rapide, donc le code ne permet plus vraiment d'accélérer.
7 nov. 2011 à 08:52
25 nov. 2007 à 11:56
le but de ce code était de voir un peu comment était fait le Jpeg.
en rechercanht sur internet, j'avais trouvé pas mal de dossiers assez épais sur la structure jpeg.
J'avais mi ce bout de code pour en faire un résumé.
La boucle 1 à 10 est pas terrible, mais ça évite d'avoir plus de ligne de code pour gérer les images HS (et c'est pas rare sur les images téléchargées) que pour afficher 2 chiffres.
pour les fonctions :
Label1.Caption = "Hauteur : " & LoadPicture(chemin).Height
Label2.Caption = "Largeur : " & LoadPicture(chemin).Width
J'ai pas trop pigé pourquoi je ne retombais pas sur la taille en twips, mais c'est bien ça en théorie. Sauf que pour afficher deux nombre, il charge deux fois l'image en mémoire. C'est tres long, surtout sur de grandes images.
Vu que windows affiche les excifs, il doit y avoir des fonctions API rapides pour le faire rapidement.
L'avantage avec ce bout de code, c'est de ne lire que le début de l'image et une seule fois et c'est rapide.
25 nov. 2007 à 01:12
J'ai réussi à récupérer des images suite à un formatage d'un disque...
Après la récupération des fichiers les photos mes images ne faisaient plus que 160 x 120 au lieu de 1600 x 1200 ..
Grâce a ton code j'ai compris la structure du JPEG et j'ai réussi à le décortiquer pour récupérer mes images HD ..
(Lorsque le fichier n'avait pas été trop détruit dut à une fragmentation trop importante du disque.. )
D'un point de vue perf, je préfère ta méthode que les méthodes toutes faire car on ne lit qu'une seule foi le fichier (sur le disque) alors que les APIs des Windows comme on les appels plusieurs fois, font plusieurs accès disque
Encore merci, et bonne prog a tous ;-)
TFlorian
4 avril 2006 à 14:36
quand une photo est redimentionnée lors de son ouverture pour loger dans un controle picture ou image, il me semble qu'il te donne la taille de l'image redimentionnée.
Je pense qu'il existe une fonction toute faite qui donne toujours la bonne taille, mais je la connais pas.
J'ai quelques images où il y a un décalage d'1 ou 2 octets à l'intérieur du fichier, je sais pas pourquoi, et la fonction se trompe
sinon, lequel des deux se trompe ?
4 avril 2006 à 06:29
si on fait: (demande 2 labels et une image....)
Label1.Caption = "Hauteur : " & LoadPicture(chemin).Height
Label2.Caption = "Largeur : " & LoadPicture(chemin).Width
N'arrivons-nous pas à la même chose???
@+ Sator
4 nov. 2003 à 22:05
mais en lui indiquent que c'est un pointeur sur une image jpeg, ça doit marcher.
Le jpeg est compressé, c'est pas un simple tableau RGB comme le BMP.
4 nov. 2003 à 15:01
Petite question : l'image qui est contenue dans #5 , est-ce qu'il est possible de l'afficher directement dans un PictureBox ou dans un objet Image ?
(par ce que mon image provient d'un flux, et je ne souhaite pas l'écrire sur le disque : trop lent)
19 sept. 2003 à 22:04
19 sept. 2003 à 21:23
Si c'est ca, rien de plus simple :
MsgBox Len(File1.Path & "" & File1.FileName)