Bonjour,
Je cherche à charger une image depuis une chaine hexadécimale.
J'ai fais quelque recherche mais rien de concluant au final.
Du coup je viens vous montrer mon code en espérant que cela vous inspire
Une idée ?
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
42
43
44
45
46
47
48
49
50
51
52
53
54 function StreamToHex(Stream: TStream; var Hex: string): Boolean; var Buffer: Byte; begin Hex := EmptyStr; Stream.Seek(0, soFromBeginning); while Stream.Read(Buffer, 1) = 1 do Hex := Hex + IntToHex(Buffer, 2); Result := not SameText(Hex, EmptyStr) end; function HexToStream(const Hex: string; var Stream: TMemoryStream): Boolean; begin Stream.Size := Length(Hex) div 2; Result := Stream.Size > 0; HexToBin(PChar(Hex), Stream.Memory, Stream.Size); end; procedure TForm4.Button2Click(Sender: TObject); var Stream: TMemoryStream; begin Stream := TMemoryStream.Create; try Image1.Picture.Graphic.SaveToStream(Stream); if StreamToHex(Stream, FHex) then begin Label1.Caption := IntToStr(Stream.Size); Memo1.Lines.BeginUpdate; Memo1.Text := FHex; Memo1.Lines.EndUpdate; end; finally Stream.Free; end; end; procedure TForm4.Button3Click(Sender: TObject); var Stream: TMemoryStream; begin Stream := TMemoryStream.Create; try if HexToStream(FHex, Stream) then begin Label2.Caption := IntToStr(Stream.Size); Image2.Picture.Graphic.LoadFromStream(Stream); end; finally Stream.Free; end; end;
Merci.
Partager