Image dans une base de donnée

Résolu
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010 - 3 juin 2007 à 19:25
 mouloud261 - 13 déc. 2009 à 11:53
Salut tout le monde

comment enregistrer une image (Jpeg,bmp......) dans une base de données, c'est a dire avec un enregistrement et puis l'afficher dans un dbimage
  merci

28 réponses

Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
25 juin 2007 à 22:18
Voila un bout de code que j'ai trouvé dans ce site et qui marche tres bien

pour enregistrer l'image dans la table voici le code
//ceici est la fonction de remplissage amélioté par F0xi
function WriteBlobFile(Table : Ttable; const Field, FileName : string) : boolean;
var blob,fs : Tstream;
begin
  table.edit;
  result := false;
  if (not FileExists(FileName)) or (not Assigned(Table)) then exit;
  blob := nil;
  fs   := nil;
  try
    blob := table.CreateBlobStream(table.FieldByName(Field),bmWrite);
    blob.Seek(0,soFromBeginning);
    try
      fs := Tfilestream.Create(FileName, fmOpenRead or fmShareDenyWrite);
      blob.CopyFrom(fs, fs.size);
  result := true;
    finally
      fs.Free;
    end;
  finally
    blob.Free;
    table.Refresh;
  end;
end;
/// ceci est la procedure à appeler lorsqu'on appui sur le bouton choix d'image!
procedure TAj_ele.OKClick(Sender: TObject);
Var fn:string;
begin
if Opd1.execute then
begin
    fn:=opd1.FileName;
   if not WriteBlobFile(eleve, 'ph', fn) then
      MessageDlg('Erreur d''ecriture du fichier dans la table...',mtWarning,[mbOk],0);
end;
image1.Picture.LoadFromFile(opd1.FileName);
end;
3
sp40 Messages postés 1284 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 13
4 juin 2007 à 12:43
Salut,

Quelle base de donnée utilise tu ?

Simon
0
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
4 juin 2007 à 19:52
J'utilise une base de donnée paradox  
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
4 juin 2007 à 22:44
il faut utiliser le type graphique "G" qui est en fait un blob..

cantador
0

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

Posez votre question
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
5 juin 2007 à 00:32
J'ai utilisé le type graphique il m'a ecrit mais j'ai pas su comment l'utiliser par la suite   est ce que vous pouvez m'apporter encore un peut plus d'explication   

  merci
0
sp40 Messages postés 1284 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 13
5 juin 2007 à 08:26
Salut,
De mémoire, il me semble que tu peux faire :
MaTable.Append;
...
MaTableMonChampBLOB.Assign([image en BMP ou jpeg);
MaTable.Post;

Simon
0
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
5 juin 2007 à 19:15
ça ne veut pas marcher , est ce qu'il n yaurais pas une sourcee dans ce site ou il y a un exemple sur  sa ...   j'ai cherché mais rien trouvé

et est cec que je peux pas le faire a partir du module de base de donnée  
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
5 juin 2007 à 23:06
tu as un exemple dans la demo de borland (frame/DB/ je crois..)
merci de cliquer "reponse acceptée"

cantador
0
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
5 juin 2007 à 23:16
Ok j'ai vu l'exemple je vais essayer de le voir de plus pret  et le comprendre encore mieux
   merci     a bientot   
0
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
5 juin 2007 à 23:18
Je vais voir dabord l'exemple et le comprendre encore mieux pour cliquer sur reponse accepté     
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
6 juin 2007 à 08:44
Bonjour,


En utilisant DBImage c'est plus simple pour les images bmp.


Une image prend becoups de place.


La base de donnée va grossir tres vite avec le nombre d'enregistrement.

Salutations

yvessimon
0
sp40 Messages postés 1284 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 13
6 juin 2007 à 14:44
Re salut,


Exemple d'enregistrement d'un bitmap dans un champ graphique

Ça marche... maintenant, les plus forts que moi te diront si c'est propre (mais ça c'est une autre histoire...)


Attention, ça ne marche que pour les BMP

cf -> aide delphi TBLOBTYPE ftGraphics


Si tu veux convertir un jpeg en bmp, tu as une function sur la JCL JPegToBitmap

(JCL et JVCL téléchargeable sur SourceForge)

Si c'est un autre format... je sais pas


procedure TFdepart.Button1Click(Sender: TObject);

var

   MyBMP : TBitmap;

begin

     MyBMP := TBitmap.Create;

     MyBMP.LoadFromFile( Nom du fichier bmp );

     TBL.Active : = True;

     TBL.Append;

     TBLnum.AsInteger := 1;

     TBLimg.Assign(MyBMP);

     TBL.Post;

     MyBMP.Free;

end;


Voilà

Si ça marche pas, merci de nous indiquer le message d'erreur, des fois ça peut aider...

Simon
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
6 juin 2007 à 19:28
LoadFromFile(Nom du fichier bmp);
c'est bien à condition d'avoir quelques images à montrer, mais si tu en as plusieurs centaines, là çà devient problématique de stoker tous les fichiers et autre argument, les BDD sont de plus en plus performantes et stockent de plus en plus de quantités impressionnates de données.

@bientôt

cantador
0
sp40 Messages postés 1284 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 13
6 juin 2007 à 20:05
-> Cantador
J'ai pas tout compris... 
L'exemple montre comment enregistrer un bitmap dans une base de donnée paradox (je pense que ça marche également pour fb), ce qui répond à la question posée, non ? ()
Qu'entends-tu par des centaines de fichiers ?

Simon
0
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
6 juin 2007 à 22:49
///////////////////////   
    TBLnum.AsInteger := 1;
     TBLimg.Assign(MyBMP);
  //////////////////////////
  j'ai pas bien compris cette partie des instruction  que representent   tblnum et tblimg

   merci
0
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
6 juin 2007 à 22:56
Oui cantador a raison   

LoadFromFile(Nom du fichier bmp);
  tu ne vas pa a chaque fois changer le nom du bmp  si t'as beaucup d'images sa devient plus interessant la solution que tu proposes                       
 
0
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
7 juin 2007 à 01:30
J'ai toujours pas trouver de reponse a ma question   
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
7 juin 2007 à 08:53
Bonjour,

Si l'image est enregistrée dans la base il est necessaire de la visualiser.


Aussi en utilisant dbimage il est possible de visualiser avant l'enregistrement. et après

Salutations

yvessimon
0
sp40 Messages postés 1284 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 13
7 juin 2007 à 10:59
a Ali_usto


Sur :

TBLnum.AsInteger := 1;

TBLimg.Assign(MyBMP);

A priori, TBL c'est une table...

A priori, num c'est un champ integer

A priori, img c'est un champ graphique


A propos de mon code :

Ça explique comment faire entrer un bmp dans une table contenant un champ de type graphique. 
Pour l'exemple, j'ai choisi de créer un bmp avec un loadfromfile...
mais c'est un détail, ce qui est important, c'est la façon
d'enregistrer ce bmp dans la table ! (ce qui, je pense, répond à ta
question initiale). Après, si tu récupères une image autrement, c'est
une autre histoire...

Simon
0
Ali_usto Messages postés 131 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 11 octobre 2010
7 juin 2007 à 14:18
Ok je vois j'ai saisi    je vais essayer ta methode  et voir si ça va marcher  
  merci  
0