【发布时间】:2016-02-02 16:32:14
【问题描述】:
如何使用delphi 7将数组的字节转换为tbitmap,数组包含内存中的png头。
bits[0]:= $9E;
bits[1]:= $20;
bits[2]:= $00;
bits[3]:= $00;
bits[4]:= $70;
bits[5]:= $AD;
bits[6]:= $BD;
bits[7]:= $1A;
我正在尝试使用 tmemorystream 将数组存储到位图中,并使用来自 Gustav Daud 的 PNGImage 来分配位图,但不是运气。
uses .., PNGImage;
procedure TForm1.Button1Click(Sender: TObject);
var
png : TPNGObject;
stream : TMemoryStream;
bits : array[0..7] of byte;
begin
bits[0]:= $9E;
bits[1]:= $20;
bits[2]:= $00;
bits[3]:= $00;
bits[4]:= $B8;
bits[5]:= $EE;
bits[6]:= $C4;
bits[7]:= $1A;
png:= TPNGObject.Create;
try
stream:= TMemoryStream.Create;
try
stream.Write(bits[0], sizeOf(bits));
stream.Position:= 0;
png.LoadFromStream(stream);
finally
stream.Free;
JvImage1.Picture.Assign(png);
end;
finally
png.Free;
end;
end;
这给了我流错误,有没有关于将数组字节写入内存流的正确写法?
谢谢,
【问题讨论】:
-
你不是在处理 BMP 图像,所以不要将你的字节加载到
TBitmap对象中。摆脱你的bitm变量。此外,您的数组在 ot 中有 9 个字节,但您只填充了 8 个字节。如果你想要一个 8 字节的数组,你的数组需要声明为[0..7]而不是[0..8]。
标签: arrays delphi bitmap delphi-7