Byte*タイプのRGB-Byte-Informationの配列があります。
corona-libraryを使用してPNGファイルに保存できます。
しかし、毎回ファイルを保存してロードすることなく、なんとかしてBytearrayをTImage-Objectに表示したいと思います...
私はすでに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のXE216のC++Builderを使用しています。
よろしく、
ジュリアン