Base SQL SERVER et images...

mpsi Messages postés 12 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 21 avril 2006 - 13 mai 2004 à 19:23
Soum_baba Messages postés 2 Date d'inscription dimanche 4 septembre 2005 Statut Membre Dernière intervention 4 septembre 2005 - 4 sept. 2005 à 19:26
Salut à tous

Je suis en présence d'une base de donnée SQL Server contenant entre autre des images.

Le problème que je rencontre est celui de la taille de la base de donnée. En effet les images stockées ne sont pas compressées et pour la petite histoire j'arrive à saturation des disques du serveur...

Si qqn a une fonction permettant d'extraire l'image de la base et de la transformer en fichier JPG... Cette personne sera remerciée sur quatorze générations (au moins).

Merci d'avance
%-6 Gilles - MPSI

9 réponses

cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
13 mai 2004 à 20:35
labout
Moi j'ai une solution qui est employée entre autre sur le traitement des images cheque recto/verso.
Dans la base on ne stocke pas l'image mais son adresse et nom.
Ensuite on stocke les images en JPG selon une architecture bien définie repertoire image\lecteur\date
Avec VB je ne sais pas (de mémoire) transformer en JPG mais sous VB.net aucun problème.

Les images stockées dans une base prennent plus de place que l'image sur le disque.
@+
0
mpsi Messages postés 12 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 21 avril 2006
26 mai 2004 à 15:37
quelle est cette fonction qui fait cela sous vb.net?
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
26 mai 2004 à 15:55
labout
exemple
PictureBox3.Image.Save(sdlgImage.FileName, GetImageFormat())

Private Function GetImageFormat() As ImageFormat
' Sélectionne le type d'image l'ordre est celle du filtre
' lors de l'enregistrement individuel d'une image dans l'onglet 2
' Formats acceptés par VB.NET
Select Case sdlgImage.FilterIndex
Case 1
Return ImageFormat.Bmp
Case 2
Return ImageFormat.Gif
Case 3
Return ImageFormat.Jpeg
Case 4
Return ImageFormat.Icon
Case 5
Return ImageFormat.Tiff
Case 6
Return ImageFormat.Emf
Case 7
Return ImageFormat.Png
Case 8
Return ImageFormat.Wmf
Case 9
Return ImageFormat.Exif
End Select
End Function

nécéssite
#Region "Import"
Imports System.Data
Imports System.Reflection
Imports System.Drawing.Imaging
Imports System.io
Imports System.Drawing
#End Region

@+
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
26 mai 2004 à 15:58
labout

Il manque quelque chose

J'ai une boite de dialogue
With sdlgImage
.InitialDirectory = Application.StartupPath & ""
.FileName = "myimage"
' ce sont les formats acceptés par VB.NET
.Filter = "Bitmap (*.bmp)|*.bmp|" & _
"GIF (*.gif)|*.gif|" & _
"JPEG (*.jpg)|*.jpg|" & _
"ICON (*.ico)|*.ico|" & _
"TIF (*.tif)|*.tif|" & _
"EMF (*.Emf)|*.Emf|" & _
"PNG (*.Png)|*.Png|" & _
"WMF (*.Wmf)|*.Wmf|" & _
"EXIF (*.Exif)|*.Exif"
.FilterIndex = 1
End With

If sdlgImage.ShowDialog() = DialogResult.OK Then
Try
' propose par défaut Tif car index à 4
' picImage.Image.SaveAdd("c:\image.tif", EncoderParameter)
PictureBox3.Image.Save(sdlgImage.FileName, GetImageFormat())
MessageBox.Show("Image sauvegardée " & _
sdlgImage.FileName, Me.Text, _
MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch exp As Exception
MessageBox.Show("L'erreur suivante est intervenue " & _
"lors de la sauvegarde de l'image: " & exp.Message, Me.Text, _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
@+
0

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

Posez votre question
Didchr81 Messages postés 10 Date d'inscription mercredi 1 mai 2002 Statut Membre Dernière intervention 23 juillet 2007
23 juil. 2004 à 22:26
Salut!

J'ai ta solution car je fais tourner une usine depuis un 1 an avec ce programme que j'ai développé.

Le but est d'afficher une image extraite de la base SQL au format Binaire a l'aide d'une référence de recherche.

Je vais plus loin car j'ai développé le programme qui ajoute les images soit par numérisation, soit par capture, soit par fichier de façon automatique ou manuelle.
Actuellement j'ai 14500 références dans la table.
Pour compresser les images il faut définir une constante de type
Const BLOCK_SIZE = 32768 'Image de 32 Ko
Si c'est l'option stockage des images dans SQL que tu as choisi c'est un bon choix, car mon appli tourne en mode TSE et je travaille tout en procédures stockées, avec aussi la possibilité de répliquer les données et de changer de serveur à tous moments.

Si tu est vraiment intéressé, je veux bien t'aider dans ton développement grâce aux sources.

Salutations !

Daffy81
0
mpsi Messages postés 12 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 21 avril 2006
24 juil. 2004 à 11:55
Merci Daffy.

(Si 81 est ton Dpt, on est du même coin...)

Concernant mon Pb j'accepte volontier ton aide. Pour être plus précis, je vais te donner quelques informations supplémentiares non négligeables.

L'application qui alimente la base SQL tourne sous access. Et les images en questions viennent d'un form access contenant un contrôle du type PictureBox (A la sauce Access). Le Pb de ce picturebox est qu'il formate l'image dans un format que lui seul peut lire. Bref, en d'autre termes, soit en vb6 ou en vb.net j'arrive à sauvegarder des données binaires de l'image (au format jpg ou bmp ect...) mais impossible de lire le fichier car le son format n'est pas reconnu par les éditeurs d'images. En revanche, sous access j'arrive à lire l'image dans le fameux picture box, mais celui-ci ne me propose aucune méthode pour le sauvegarder dans un quelquonque format.

Voila, Voila.....

Je pense que mon salut ne pourra venir que d'une bidouille sous access. A ce jour, je ne l'ai pas trouvée.

Si t'as développé un truc, même sans rapport avec access, il est le bienvenu car il pourra peut-être me donner des idées.

Merci pour ta réponse et à bientôt

Gilles - MPSI
0
Didchr81 Messages postés 10 Date d'inscription mercredi 1 mai 2002 Statut Membre Dernière intervention 23 juillet 2007
26 juil. 2004 à 08:46
Salut !

Un premier conseil, si tu pense resté sous Access, prépare toi à passer de longues nuits de migration, car bizarrement Microsoft vient de nous faire un petit dans le dos avec sa mouture 2003.

Je m'explique, aujourd'hui, nous avons une GPAO qui tourne sous Access2000/SQL2000 et lors de l'achat du nouveau serveur en 2003, nous nous sommes aperçu que outre tous les patchs à mettre en place, il fallait réecrire notre code, car une simple requête VB ou VBA plantée l'application.
Au départ je pensais que cela concerné que Access, mais en fait tous les produits qui tourne sous 2000 doivent être réecri pour passer sous 2003 et notamment Windev.

Donc tu as bien compris que dans notre cas nous avons deux ans au mieux pour se positionner sur une nouvelle GPAO.

Donc pour moi Access et un produit non Professionnel et on ne dois pas faire tourner une usine avec, et comme tu le dis on bidouille bien avec Access.

C'est pour cela que j'ai développé mon programme complétement en VB6, et je commence en parralléle une réecriture dans un autre langage.

Si tu veux que l'on se rencontre ou autre donne moi un autre moyen de se contacter.

Salutations !

Daffy81
0
mpsi Messages postés 12 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 21 avril 2006
26 juil. 2004 à 09:13
Oui sans pb, on peut se rencontrer.

Je suis de Rabastens.

Je te donne mon e-mail pour un éventuel RDV:

contact@mpsi-info.com

A bientôt

Gilles - MPSI
0
Soum_baba Messages postés 2 Date d'inscription dimanche 4 septembre 2005 Statut Membre Dernière intervention 4 septembre 2005
4 sept. 2005 à 19:26
Bonjour,

j'ai une base SQL Server 2000 qui contient des images stockés au format binaire. je cherche comment extraire ces images de la base et les enregistrer sous un format .JPG sur disque.
J'utilise VB.NET et Windev9 comme langage.

Merci pour votre collaboration.
0
Rejoignez-nous