首选需要一个 PngImage 包。PngImage 放在安装目录的source文件夹内,文件夹名 pngimage
代码如下:
function Png2Hex(png: TPngObject): 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;
procedure TForm1.Button3Click(Sender: TObject);
var
png: TPngObject;
img: TImage;
str: String;
jieguo: string;
I: integer;
begin
if(edit1.Text = '') then
begin
Application.MessageBox('请先加载图片!', '提示', MB_ICONERROR);
exit;
end;
//通过Image图片获取字符串
png := TPngObject.Create;
try
//通过这个代码获取的png图片的,与picture.data完全一致, 只不过,缺少了 开头一部分代码:
//0954506E67496D616765
//0954506E67496D616765 也就是说 开头的 这个是个定值, 只对png图而言。
png.Assign(Image1.Picture.Graphic);
str:= '0954506E67496D616765'+Png2Hex(png);
for I := 1 to str.Length do
begin
jieguo := jieguo + MidStr(str,I,1);
if(I mod 64 = 0) then
begin
jieguo := jieguo + chr(13)+chr(10);
end;
end;
memo1.Text := jieguo;
//循环一下,每64位加一行换行。
finally
png.Free;
end;
end;