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

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;
Une idée ?

Merci.