bcb 6.0 里如何通过一批数据来显示图像
我现在从一个模块里采集得到一批数据,数据的大小是256X288个像素,我在BCB6.0里想用Image控件来显示这张图片,这要怎么弄。得到的数据是16进制的数据。谢谢各位!
[解决办法]
用tchart画曲线,可以直接从数据库加载数据。
[解决办法]
1、确认图片格式
2、创建对应格式的空文件
3、把数据存到新创建的文件里
4、加载该文件
[解决办法]
加文件头。
借花献佛,下面的是灰度图像,你参考一下吧,建议先搜索一下bmp的文件头看看
int(sw),//x dest dims
int(sh),//y dest dims
0, // src x
0, // src y
sw, // src dims
sh, // src dims
imageData,// array of DIB bits
(BITMAPINFO*)bmi, // bitmap information
DIB_RGB_COLORS,// RGB or palette indexes
SRCCOPY); // raster operation code
if( deleteImageData )
{
delete imageData;
}
有一部分是我自己改成了
/***获得调色板信息,直接改buffer数据,前40字节为BITMAPINFOHEADER***/
for( int i = 0; i < 256; i++ )
{
buffer[40+4*i] = buffer[41+4*i] = buffer[42+4*i]=i; //灰度RGB相等
buffer[43+4*i] = 0; //保留
}
[解决办法]
unsigned char buffer[sizeof(BITMAPINFOHEADER) + 1024];//bmp信息头+RGB调色板
BITMAPINFO* bmi = (BITMAPINFO*)buffer;//改变数组的格式
int bmp_w ,bmp_h;
/***图像信息***/
bmp_w = Image2->Width;//图像宽度
bmp_h = Image2->Height;//图像高度
BITMAPINFOHEADER* bmih = &(bmi->bmiHeader);//指向BITMAPINFO结构体
memset( bmih, 0, sizeof(*bmih));//赋值0,很多变量的值都为0
bmih->biSize = sizeof(BITMAPINFOHEADER);//信息头大小
bmih->biWidth = bmp_w;//图像的宽度
bmih->biHeight = -abs(bmp_h);//图像的高度
bmih->biPlanes = 1;//图片的平面属性,显示器只有一个平面
bmih->biCompression = BI_RGB;//非压缩
bmih->biBitCount = 8;
/***获得调色板信息,直接改buffer数据,前40字节为BITMAPINFOHEADER***/
for( int i = 0; i < 256; i++ )
{
buffer[40+4*i] = buffer[41+4*i] = buffer[42+4*i]=i; //灰度RGB相等
buffer[43+4*i] = 0; //保留
}