Delphi下16进制位图数据转位图
如果我们在Form中拖入一个Image控件,并设置好picture后,Alt+F12就可以看到Form的源代码中已经将图片转成了16进制字符串,如下:http://www.pfeng.org/archives/290
那么在实际的应用中如何实现把图片转16进制呢,可以参考以下转换PNG的例子,其他格式的图片转换都基本类似:
|
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
|
uses pngimage;{从 png 图片到十六进制字符串}function Png2Hex(png: TPngImage): string;var stream: TMemoryStream;begin stream := TMemoryStream.Create; png.SaveToStream(stream); SetLength(Result, stream.Size * 2); BinToHex(stream.Memory, PChar(Result), stream.Size); stream.Free;end;{从十六进制字符串恢复 png 图片}procedure Hex2Png(str: string; out png: TPngImage);var stream: TMemoryStream;begin if not Assigned(png) then png := TPngImage.Create; stream := TMemoryStream.Create; stream.SetSize(Length(str) div 2); HexToBin(PChar(str), stream.Memory, stream.Size); png.LoadFromStream(stream); stream.Free;end;{测试}procedure TForm1.Button1Click(Sender: TObject);var png: TPngImage;begin png := TPngImage.Create; png.LoadFromFile('c:\temp\test.png'); Memo1.Text := Png2Hex(png); png.Free;end;procedure TForm1.Button2Click(Sender: TObject);var png: TPngImage;begin png := TPngImage.Create; Hex2Png(Memo1.Text, png); Canvas.Draw(0, 0, png); png.Free;end; |
在个别时候,可能需要解析From源代码中生成的16进制图片,可以参考以下代码:

浙公网安备 33010602011771号