IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Enregistrement images non BMP dans une BDD TurboDB avec DBImage.


Sujet :

Bases de données Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 81
    Par défaut Enregistrement images non BMP dans une BDD TurboDB avec DBImage.
    Salut...
    Je veux enregistrer des images jpg dans ma BDD TurboDB, j'ai cherché sur internet et j'ai trouvé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var 
    J: TJpegImage; 
    B: TBitmap; 
     
    Begin 
    J := TJpegImage.Create; 
    J.LoadFromFile('C:\PH2.jpg'); {emplacement de l'image} 
    B:= TBitmap.Create; 
    B.Assign(J); 
    DBImage1.Picture.Bitmap:=B; 
    B.Free; 
    J.Free; 
    end;
    Mais au lieu de spécifier une image précise comme dans la ligne n°7, je veux charger mes images de n'importe quel emplacement.
    commenr faire?

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 910
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
      CheminImage: string;
    begin
      CheminImage := {emplacement de l'image déterminé par ce que tu voudras}
      // ou choix par une boîte de dialogue
      if OpenPictureDialog1.Execute and FileExists(OpenPictureDialog1.FileName) then
        CheminImage := OpenPictureDialog1.FileName;
      J.LoadFromFile(CheminImage); {chargement de l'image}
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 81
    Par défaut
    Salut;
    Voici mon code qui marche trés bien pour les BMP seulement !.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    var
      FileStream: TFileStream;
      BlobStream: TStream;
    begin
     if (OpenPictureDialog1.Execute) then
       begin
       Principale.Temploye.Edit;
         try
           BlobStream := Principale.Temploye.CreateBlobStream(Principale.Temploye.FieldByName('PHOTO'),bmWrite);
           FileStream := TFileStream.Create(OpenPictureDialog1.FileName,fmOpenRead or fmShareDenyNone);
           BlobStream.CopyFrom(FileStream,FileStream.Size);
           FileStream.Free;
           BlobStream.Free;
         except
           Principale.Temploye.Cancel;
         end;
       end;
     if Principale.Temploye.State = dsedit then Principale.Temploye.Post;
    end;
    Je veux le modifier afin q'il me permet de charger les autres type d'images tel que les JPG ?

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 910
    Billets dans le blog
    6
    Par défaut
    essaye qqch comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    var
      BlobStream: TStream;
      MyPic: TPicture;
      MyBmp: TBitmap;
    begin
     if (OpenPictureDialog1.Execute) then
       begin
       Principale.Temploye.Edit;
         try
           BlobStream := Principale.Temploye.CreateBlobStream(Principale.Temploye.FieldByName('PHOTO'),bmWrite);
           MyPic := TPicture.Create(nil);
           MyBmp := TBitmap.Create(nil);
           MyPic.LoadFromFile(OpenPictureDialog1.FileName); // le Graphic ouvre les différents formats de fichiers graphiques
           MyBmp.Assign(MyPic); // on en "récupère" le bmp
           MyPic.Free;
           MyBmp.SaveToStream(BlobStream); // qu'on blobe
           MyBmp.Free;
           BlobStream.Free;
         except
           Principale.Temploye.Cancel;
         end;
       end;
     if Principale.Temploye.State = dsedit then Principale.Temploye.Post;
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 81
    Par défaut
    J'ai essayé ton code 'tourlourou' mais une erreur me dit :
    Too many actual parameters

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 910
    Billets dans le blog
    6
    Par défaut
    Peut-être les Create n'ont-ils pas besoin de paramètre... dans ce cas, enlève les (nil)
    Par ailleurs, le message était clair : trop de paramètres, passés à une procédure, fonction ou méthode d'objet. La notion de la ligne incriminée, précédant le message d'erreur, aurait pu te permettre de le trouver, si c'est bien ça.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 81
    Par défaut
    Peut-être les Create n'ont-ils pas besoin de paramètre... dans ce cas, enlève les (nil)
    Par ailleurs, le message était clair : trop de paramètres, passés à une procédure, fonction ou méthode d'objet. La notion de la ligne incriminée, précédant le message d'erreur, aurait pu te permettre de le trouver, si c'est bien ça.
    D’accord, j'ai enlevé les (nil) et ça compile sans problème, mais quand quand j'essaie de charger une image JPG un message d'erreur se déclenche:
    ‘Cannot assign a TPicure to a TBitmap’

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    je m'en doutais ! il ne s'agit pas de mettre une image dans un blob qui pose problème mais récupérer ce Blob pour le mettre dans un Bitmap.

    Quand vous écrivez post #3 que le code fonctionne très bien pour un bitmap, ce même code fonctionne aussi bien pour un JPEG puisque vous utilisez un FileStream. Par contre que vous ne sachiez pas comment mettre ce stream récupéré dans un TImage (qui ne connait que les bitmaps car je présume que la version de Delphi, non précisé, est la version 7) est un autre sujet !

    je n'ai pas le code sous la main (sur un autre poste) donc je n'indique que la démarche possible à suivre : analyser les premiers octets du blob pour savoir de quel format il s'agit (JPEG, BMP, PNG etc...) et agir en conséquence (création d'un TJpeg, TPngImage pour ensuite faire un assign au bitmap)
    un peu ce que fait le code du post #1 mais dans le sens inverse (du blob vers l'objet)

Discussions similaires

  1. problème d'utilisation d'image en PHP dans une bdd.
    Par BenGonGon dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/09/2011, 13h17
  2. [MySQL] Enregistrement d'un array dans une bdd
    Par benjamin002 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/02/2011, 18h52
  3. [MySQL] recuper une image stocker totalement dans une bdd
    Par agnaou dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/02/2009, 16h56
  4. Réponses: 5
    Dernier message: 17/12/2007, 17h50
  5. [MySQL] enregistrer des données CSV dans une BDD
    Par NicoO_O dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/11/2006, 23h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo