Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Discussion: interbase image png

  1. #1
    Membre à l'essai
    Inscrit en
    juillet 2003
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 41
    Points : 22
    Points
    22

    Par défaut interbase image png

    salut tout le monde,
    est ce qu'on peut insérer des images png dans une base de donnée interbase.
    (j'utilise delphi 2010, ibx, interbase 6.5)
    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de SergioMaster
    Homme Profil pro Serge Girard
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    5 395
    Détails du profil
    Informations personnelles :
    Nom : Homme Serge Girard
    Âge : 58
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 5 395
    Points : 10 572
    Points
    10 572

    Par défaut

    Bien sur. Il suffit d'utiliser un Blob et d'aller faire un tour dans la FAQ de Delphi
    ce n'est pas un problème Interbase mais Delphi , plus particulièrement du TImage qui est (toujours trop) orienté BMP quelques manips et le tour est joué .
    Voici les procédures que j'utilise qui je pense , se passent de commentaires

    Code :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    procedure DBImage(I : TImage ; D: TDataset; F : TField);
    var
    m : TStream;
    FirstBytes: AnsiString;
    begin
    if F.IsNull then Exit;
    m := D.CreateBlobStream(F,bmRead);
    if m <> nil then
     begin
     try
      SetLength(FirstBytes, 8);
      m.Read(FirstBytes[1], 8);
      if Copy(FirstBytes, 1, 2) = 'BM' then I.Picture.Graphic := TBitmap.Create
      else
       if FirstBytes = #137'PNG'#13#10#26#10
          then I.Picture.Graphic := TPngImage.Create
       else
       if Copy(FirstBytes, 1, 3) = 'GIF'
          then I.Picture.Graphic := TGIFImage.Create
       else if Copy(FirstBytes, 1, 2) = #$FF#$D8
            then I.Picture.Graphic := TJPEGImage.Create;
      try
       m.Seek(0,0);
       I.Picture.Graphic.LoadFromStream(m);
      except
      end;
     finally
       m.Free;
     end;
     end;
    end;
     
    procedure Image2DB(I : TImage ; D: TDataset; F : TField);
    var
    m : TStream;
    begin
    m := D.CreateBlobStream(F,bmRead);
    if m <> nil then
     begin
     try
       if not i.Picture.Graphic.Empty  then i.Picture.Graphic.SaveToStream(m);
       if not i.Picture.Bitmap.Empty   then i.Picture.Bitmap.SaveToStream(m);
       TBlobField(F).LoadFromStream(m);
     finally
       m.Free;
     end;
     end;
    end;
    PS . j'ai oublié d'indiquer les uses : GIFImg, Jpeg,pngimage
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •