我有一个 Byte* 类型的 RGB 字节信息数组。
我可以使用电晕库将它保存到 PNG 文件中。
但是,我想以某种方式在 TImage-Object 上显示 Bytearray 而不必每次都保存和加载文件......
我已经找到了 memorystream 的解决方案
Byte* pBuffer;//data
long cbBuffer;//length of data
TMemoryStream *tmem=new TMemoryStream();
tmem->Write(pBuffer,cbBuffer);
TPngImage *saf=new TPngImage();
saf->LoadFromStream(tmem);
然而,这抱怨缺少标题,因为 bytearray 没有标题。
所以,我想创建一张空白图片并在上面绘制像素信息......
Graphics::TBitmap *Bitmap = new Graphics::TBitmap();
Bitmap->Width = pVih->bmiHeader.biWidth;
Bitmap->Height = pVih->bmiHeader.biHeight;
for(int j=0;j<pVih->bmiHeader.biHeight;j++){
Byte* y=(Byte*) Bitmap->ScanLine[j];
for(int x=0;x<pVih->bmiHeader.biWidth;x++)
y[x]=pBuffer[j*pVih->bmiHeader.biWidth+x];
}
Image1->Picture->Graphic=Bitmap;
Application->ProcessMessages();
但是,这保持空白。而且我真的不喜欢画像素,即使使用更快的 ScanLine ......
那么,有人知道如何在 TImage-Object 中显示颜色的 Bytearray 吗?
如果有一个整洁的库,你也可以建议它,但我尝试使用 pnglib 几次,我似乎不知道如何使用它。
我正在使用 Embarcadero 的 XE2 16 中的 C++Builder。
问候,
朱利安