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 :

probleme VARBYTES au lieu de BLOP !


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut probleme VARBYTES au lieu de BLOP !
    bonsoire
    g besoin d'inserer des images JPG dans une bdd mysql et les etraire au besoin
    pour l'insertion g utiliser ce bout de code:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    Var
      jpg : TJPEGImage;
      bmp : tbitmap;
      proportion : double;
    begin
    od.Execute;//ouvre la fenetre pour choisire l'image
    IF (od.FileName<>'')then begin
                             flux:=TMemoryStream.Create;
                             jpg:=  TJPEGImage.Create;
                             bmp:=  tbitmap.Create;
                             jpg.LoadFromFile(od.FileName);//ouvrire l'image sure le disque dure dans une variable jpg
                             bmp.Assign(jpg);//transferer l'image de la variable jpg vers la variable bmp pour modification
                               try
                                  proportion :=jpg.Height/jpg.Width;//calcule la proportion = (largeure % a la oteure) pour ne pas diformer l'image au redimonssionnement
                                  bmp.Width:= 250;//affecter une largeure standard a l'image 250px comunne a toutes les images
                                  bmp.Height := Round(250* proportion);//calcule de la hoteure selon les proportions de l'image oroginale
                                  bmp.Canvas.StretchDraw(bmp.Canvas.ClipRect, jpg);//transferer la jpg dans le bmp redimonssionné (le moule)
                                  jpg.Assign(bmp);//transferer l'image redimonssionnée du bmp vers la jpg par ecrasement de l'ancienne
                               finally
                                  bmp.Free;//on libére la bmp
                               end;
                             jpg.CompressionQuality:=70;//on choisie le niveau de compression (la qualité)
                             jpg.ProgressiveEncoding:=true;//on choisie le mode de compression (rogressive plus performant)
                             jpg.Compress;//on effectue la compression
                             jpg.SaveToStream(flux);//on met l'image dans la variable flux pour l'enregistrer dans la bdd
                             jpg.SaveToFile('C:\Documents and Settings\Administrateur\Bureau\prette.jpg');//teste d'enregistrement sur disque dure
                             image1.Picture.Bitmap.Assign(jpg);
                             end;
    query.SQL.Clear;
    query.Sql.Add('Insert into tbl(n,img) Values('+edit2.Text+',:mon_image)');
    query.Parameters.ParamByName('mon_image').LoadFromStream(flux, ftBlob);
    query.ExecSQL;
    end;
    la variable Flux est un streammemory deglarée en globale
    l'insertion se fait tres bien
    pour l'extraction g fait
    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
     
    var jpg : TJPEGImage;
        ms: TMemoryStream;
    begin
    jpg := TJPEGImage.Create;
    ms:=  TMemoryStream.Create;
     
      try
        TBlobField(ADOTable1.FieldByName('img')).SaveToStream(ms);
        ms.Position:=0;
        jpg.LoadFromStream(ms);
        image1.Picture.Bitmap.Assign(jpg);
      finally
        ms.Free;
        jpg.Free;
      end;
     
    end;
    mais ca marche pas, parceque g remarquer que meme si g spécifier le type du champ en Blob a l'insertion g comme apercue dans le dbgride VARBYTES, mais si je fait une insertion apartire du client graphique de mysql et je recompile sous delphi je vois que le champ est redevenue BLOB , e apres cela tout marche parfaitement et sans probleme
    ou est le problemme ?
    je m'excse pour les fautes d'orstographes je suis vraiment trop préssé pour soigner mon ecriture désolé pour les puristes

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    je n'ai jamais vu de soucis avec des blobs, j'ai vu au bureau des applis stockant des DFM et XML et autre ressources dans des zips mis dans des blobs ... c'est ressources évolues peu et sont intégralement géré par le programme

    Pour les Images, j'aime déjà bcp moins l'idée, préférant avoir un serveur d'images (voir du FTP) et stocker les informations de connexion (user, pwd, host, directory ...), ou alors je stocke tout dans une table Blob qui ne contient qu'une Clé et un Champ Blob ... comme ça si on perd les blob, ce n'est pas la donnée métier qui est perdu avec ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    je developpe une aplication client serveure avec accessecurisé c le seule moyen que g trouver pou securiserl'acces au images qui sont dans mon cas des photos d'identité, g pris bien soin de redimonssioner les images et apliquer une compression a la fin j'obtien des "petits" fichier de 14 17 Ko ue je stck dans une table apart avec justeune clé et un champ blob

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    apres quelques tests il me semble que le probleme vien de mysql, j'utilise la version 5.0 et meme si g defini le type de champ en BLOB il semble que mysql le définie en VARBYTES comment faire pour le garder en BLOB

Discussions similaires

  1. Probleme fichier obj plat (2D au lieu de 3D)
    Par deusyss dans le forum 3D
    Réponses: 2
    Dernier message: 29/12/2013, 19h56
  2. Probleme d'accent, j'ai un ? au lieu d'un é
    Par pierrot10 dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2009, 23h56
  3. Probleme Qwerty au lieu de Azerty
    Par Scheb dans le forum SDL
    Réponses: 4
    Dernier message: 07/06/2009, 11h25
  4. Probleme croix rouge au lieu d'applet
    Par bolandfranck dans le forum Applets
    Réponses: 4
    Dernier message: 03/05/2007, 17h15
  5. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50

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