读书人

急问关于从缓冲区中将图象载解决思路

发布时间: 2012-02-25 10:01:47 作者: rapoo

急问关于从缓冲区中将图象载
从CCD中获得图象数据,存在缓冲区中,目标是将其保存至JPEG格式的文件,因此想先将其保存到BITMAP里面再转换为JPEG,
主要目标是将缓冲区的图象保存至BMP文件
aStream:=TMemoryStream.Create;
aStream.WriteBuffer(bfh,sizeof(BITMAPFILEHEADER));
aStream.WriteBuffer(m_pBitmapInfo^,sizeof(BITMAPINFOHEADER));
aStream.WriteBuffer(m_pImageBuffer[BufferIndex]^,dwImageSize);

//aStream.SaveToFile(DestName);
aBitmap:=TBitmap.Create;

aBitmap.LoadFromStream(aStream);
showmessage(inttostr(aBitmap.Width));
aBitmap.SaveToFile(DestName);
如果直接从STREAM中保存至BMP文件是可以的,但如果像上面这样用aBitmap.LoadFromStream(aStream);后似乎BITMAP不载入任何东西,生成的BITMAP文件是0字节。
但如果用aStream从文件载入后再用aBitmap.LoadFromStream(aStream);就没有问题
aStream:=TMemoryStream.Create;
aStream.LoadFromFile(DestName);

aBitmap:=TBitmap.Create;
aBitmap.LoadFromStream(aStream);
//showmessage( 'Bitmap Width= '+inttostr(aBitmap.Width));
aBitmap.SaveToFile( '0m.bmp ');
直接用aStream.WriteBuffer和aStream.LoadFromFile有什么区别吗,两者读入的字节数是一样的。
会不会是aBitmap.loadfromStream的问题????

[解决办法]
在aBitmap.LoadFromStream之前先aStream.Position:=0;
WriteBuffer完成后指针在末尾,LoadFromStream自然读不到数据

读书人网 >.NET

热点推荐