Connaitre la taille (largeur*hauteur) d'une image BitMap stockée dans un champ O

toopix Messages postés 30 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 16 avril 2010 - 22 févr. 2010 à 17:14
toopix Messages postés 30 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 16 avril 2010 - 23 févr. 2010 à 15:41
Tout est dans la question :)

4 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
22 févr. 2010 à 23:28
(tu sais donner envie de te répondre...)

méthode 1 : récupérer le métafile (qui renvoie la taille)
http://support.microsoft.com/?kbid= 119395

méthode 2 :
OLE VERS STD (fin de page)
http://faq.vb.free.fr/index.php?question =127
puis TAILLE STD
http://www.codyx.org/snippet_convertir-taille-objet-stdpicture_281.aspx

[hr]
0
toopix Messages postés 30 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 16 avril 2010
23 févr. 2010 à 10:41
Merci pour la clarté de la méthode à adopter.

Petit détail : je ne suis pas sous VB mais sous VB.NET.


Mis à part cela, voici le code implémenté :



 
            Dim stm As ADODB.Stream
            Dim sTemporyFileName As String
            stm = New ADODB.Stream

            stm.Type = StreamTypeEnum.adTypeBinary
            stm.Open()
            'stm.Write(rs.Fields("Photo").Value)
            stm.Write(myBase.myTable.Rows(0).Item(1))
            sTemporyFileName = "C:\coucou.bmp"
            stm.SaveToFile(sTemporyFileName, SaveOptionsEnum.adSaveCreateNotExist)
            'image1.Picture = LoadPicture(sTemporyFileName)
            ' Visual Basic
******            image1.Image = System.Drawing.Bitmap.FromFile(sTemporyFileName)
            Kill(sTemporyFileName)
            stm.Close()
            stm = Nothing


Lorsque je charge mon image dans le picture box j'ai le message d'erreur : Mémoire insuffisante ! !

Des idées ?
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
23 févr. 2010 à 11:44
tu as vérifié que le chemin temp menait bien vers l'image?
elle n'est pas plus grande que la taille max de ton objet.. picture, dans ce cas?
et avec .imagelocation ? (mais toute façon tu dois pouvoir avoir la taille sans l'afficher)

++
0
toopix Messages postés 30 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 16 avril 2010
23 févr. 2010 à 15:41
On avance on avance :)

L'image est bien stockée dans le chemin spécifié.
Je ne vois pas de limite maximal dans l'objet PictureBox mais j'avais toujours l'erreur.

En passant par la propriété imagelocation et en spécifiant le chemin de l'image je n'ai plus cette erreur.

PB : l'image est en très mauvaise forme , elle ne s'affiche pas seule une croix rouuge s'affiche sur ma picture box.

Depuis l'explorateur windows l'image est impossible à lire : fichier semble endommagé ou corrompu d'après la visionneuse Windows.

            Dim stm As ADODB.Stream
            Dim sTemporyFileName As String
            stm = New ADODB.Stream

            stm.Type = StreamTypeEnum.adTypeBinary
            stm.Open()
            'stm.Write(rs.Fields("Photo").Value)
            stm.Write(myBase.myTables.Rows(0).Item(1))
            sTemporyFileName = "C:\Users\mohmed\Documents\coucou.bmp"
            stm.SaveToFile(sTemporyFileName, SaveOptionsEnum.adSaveCreateOverWrite)
            'image1.Picture = LoadPicture(sTemporyFileName)
            ' Visual Basic
            image1.ImageLocation = sTemporyFileName
            'Kill(sTemporyFileName)
            stm.Close()
            stm = Nothing



Soit Access modifie mon image en la stockant

Soit la fonction saveTofile me perds des bits

Soit je ne sais pas pourquoi je ne recupère pas mon image

Inutile de dire qu'avec mon image corrompu impossible de récupèrer des dimensions.

Help
0