Bonjour,
je suis sur Lazarus svn version 1.1.
Je n'arrive pas à convertir des images venant d'un select sql qui est de type image en image que je puisse stocker dans un dossier par exemple.
Je reçois l'image de la requête comme ça : 0x89504E470D0A1A0A0000000D494844520000013B000000FA0806000000DE1FE06200000004674 etc.....
Quand je la mets dans un stream, le stream.size m'affiche 4096.

Je mets une partie du code, je précise que rien de ce que j'ai fait ne marche, j'ai le message :
Error while reading stream: Chunk length exceeds stream length
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
35
36
37
38
39
40
41
 
procedure TForm1.Button1Click(Sender: TObject);
var
  connexion: TZConnection;
  QueryData: TZQuery;
  datasource: TDataSource;
 
  fstream : tStream; 
begin  
  connexion:= TZConnection.Create(nil);
  QueryData:= TZQuery.Create(nil);
  datasource:= TDataSource.Create(nil);
 
  strlist:= TStringList.Create;
 
  connexion.HostName:='localhost\server';
  connexion.Protocol:='mssql';
  connexion.User:='sa';
  connexion.Password:='@cdcscsdc';
  connexion.Connected:=True;
 
  QueryData.Connection:= connexion;
  QueryData.SQL.Text:='USE [Demo4.cdscds_cdscds_cdscds_cds];'+#13#10+
  ' SELECT TOP 1 [Item].[ItemImage] AS image FROM [Item] WHERE [Item].[ItemImage] IS NOT NULL';
  QueryData.Open;
 
  datasource.DataSet:= QueryData; 
 
    MS:= TMemoryStream.Create;
    fstream:= QueryData.CreateBlobStream(QueryData.FieldByName('image'), bmread);
    Memo1.Text:=IntToStr(fstream.Size);  
      try
        image:= TFPWriterPNG.create;
        image2:= TFPCustomImage.Create(500, 500);
        image2.LoadFromStream(fstream);
        image2.SaveToFile('C:\Users\moi\Desktop\file.png');
     except
       on E: Exception do
       Memo1.Text:=E.message;
      end;
end;
Si quelqu'un a la solution, un grand merci !