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 lengthSi quelqu'un a la solution, un grand merci !
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;
Partager