Problème colonne image en byte (4096) Sql server vers image
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 :
Citation:
Error while reading stream: Chunk length exceeds stream length
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
|
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 !