引用c++的dll图像缓冲区指针,如何显示位图
//相机VIDEO状态使用
//输入参数:上传VIDEO数据指针
//功能:相机上传已经记录的一桢VIDEO图象数据//
//返回TRUE,代表完成,否则FALSE//
BOOL xxVideoFrameRGB(LPVOID rgbbuf)
以上是c的dll函数,我用delphi引用(略去load dll 的部分)
buffer := GetMemory(viewW * ViewH * 3);
nRet := xxVideoFrameRGB(buffer);
if nRet then
begin
bmpscreen := TBitMap.Create;
stream := Tmemorystream.Create;
stream.Read(buffer, SizeOf(buffer));
try
stream.Position := 0 ;
bmpscreen.LoadFromStream(stream);
image1.Picture.Bitmap.Assign(bmpscreen);
//image1.Picture.Bitmap.Canvas.Draw(0, 0 , bmpscreen);
except
stream.Clear;
bmpscreen.Free;
end;
end;
为什么提取不出来图像呢,我用stream的savefromstream后里面的bmp是空图片,是哪里有问题吗? delphi
[解决办法]
for i := 0 to viewH - 1 do
begin
pLine := bmp.ScanLine[i];
copymemory(pLine,buffer,viewW * 3);
Inc(buffer, viewW * 3);
end;
Dec(buffer, viewH * viewW * 3);