社区
机器视觉
帖子详情
请问如何将数据存为图像文件?
greenflash
2003-12-25 12:10:32
我有一组数据(150*150),根据它们值的不同,我在VC里面可以在界面上
用一个带色的矩形表示数值在150*150象素空间的分布情况,采用的是hot配色
方案。但是,我不知道怎么把我在界面上画出来的图形用程序保存下来,比如
存成256色的bmp文件。烦请指教,谢谢~
...全文
54
8
打赏
收藏
请问如何将数据存为图像文件?
我有一组数据(150*150),根据它们值的不同,我在VC里面可以在界面上 用一个带色的矩形表示数值在150*150象素空间的分布情况,采用的是hot配色 方案。但是,我不知道怎么把我在界面上画出来的图形用程序保存下来,比如 存成256色的bmp文件。烦请指教,谢谢~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dnnupt
2004-01-11
打赏
举报
回复
mark
greenflash
2004-01-11
打赏
举报
回复
拷屏最大的麻烦就是每帧图像对不齐,我的图像显示又是做在VC界面上的,
所以希望能单独把图像先存下来,做flash的时候至少大小一样,位置对起
来也方便。
caesar22
2004-01-10
打赏
举报
回复
用位图做FLASH,肯定是要钝的吧...位图那么一个大东西...可不可以先用拷屏,然后在来个压缩,搞成JPG那样的.....
greenflash
2004-01-09
打赏
举报
回复
感谢前面的两位:) 有没有实例啊?
to:fridayeve
现在我就是用的屏幕copy,在导入Flash做动画的时候感觉很不方便。
于是又用Matlab来单独画图,但感觉整体上很不流畅。所以才想问问
怎么直接把图像保存下来。
fridayeve
2004-01-08
打赏
举报
回复
保存下来的目的何在,是为了以后看自己的杰作方便吗,呵呵,拷屏就行了
hoget
2004-01-02
打赏
举报
回复
首先要写.bmp文件的信息头,然后按照数据的不同,附与不同的灰度值。如果数据量不是很大,最好用24位真彩色,否则看不出效果。
位图文件的格式如下:
位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以前的BMP位图文件格式与显示设备有关,因此把它称为设备相关位图(device-dependent bitmap,DDB)文件格式。Windows 3.0以后的BMP位图文件格式与显示设备无关,因此把这种BMP位图文件格式称为设备无关位图(device-independent bitmap,DIB)格式,目的是为了让Windows能够在任何类型的显示设备上显示BMP位图文件。BMP位图文件默认的文件扩展名是BMP或者bmp。
6.1.2 文件结构
位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它们的名称和符号如表6-01所示。
表6-01 BMP图像文件组成部分的名称和符号
位图文件的组成
结构名称
符号
位图文件头(bitmap-file header)
BITMAPFILEHEADER
bmfh
位图信息头(bitmap-information header)
BITMAPINFOHEADER
bmih
彩色表(color table)
RGBQUAD
aColors[]
图像数据阵列字节
BYTE
aBitmapBits[]
位图文件结构可综合在表6-02中。
表6-02 位图文件结构内容摘要
偏移量
域的名称
大小
内容
图像文件
头
0000h
标识符(Identifier)
2 bytes
两字节的内容用来识别位图的类型:
‘BM’ : Windows 3.1x, 95, NT, …
‘BA’ :OS/2 Bitmap Array
‘CI’ :OS/2 Color Icon
‘CP’ :OS/2 Color Pointer
‘IC’ : OS/2 Icon
‘PT’ :OS/2 Pointer
0002h
File Size
1 dword
用字节表示的整个文件的大小
0006h
Reserved
1 dword
保留,设置为0
000Ah
Bitmap Data Offset
1 dword
从文件开始到位图数据开始之间的数据(bitmap data)之间的偏移量
000Eh
Bitmap Header Size
1 dword
位图信息头(Bitmap Info Header)的长度,用来描述位图的颜色、压缩方法等。下面的长度表示:
28h - Windows 3.1x, 95, NT, …
0Ch - OS/2 1.x
F0h - OS/2 2.x
0012h
Width
1 dword
位图的宽度,以像素为单位
0016h
Height
1 dword
位图的高度,以像素为单位
001Ah
Planes
1 word
位图的位面数
图像
信息
头
001Ch
Bits Per Pixel
1 word
每个像素的位数
1 - Monochrome bitmap
4 - 16 color bitmap
8 - 256 color bitmap
16 - 16bit (high color) bitmap
24 - 24bit (true color) bitmap
32 - 32bit (true color) bitmap
001Eh
Compression
1 dword
压缩说明:
0 - none (也使用BI_RGB表示)
1 - RLE 8-bit / pixel (也使用BI_RLE4表示)
2 - RLE 4-bit / pixel (也使用BI_RLE8表示)
3 - Bitfields (也使用BI_BITFIELDS表示)
0022h
Bitmap Data Size
1 dword
用字节数表示的位图数据的大小。该数必须是4的倍数
0026h
HResolution
1 dword
用像素/米表示的水平分辨率
002Ah
VResolution
1 dword
用像素/米表示的垂直分辨率
002Eh
Colors
1 dword
位图使用的颜色数。如8-位/像素表示为100h或者 256.
0032h
Important Colors
1 dword
指定重要的颜色数。当该域的值等于颜色数时,表示所有颜色都一样重要
调色板数据
0036h
Palette
N * 4 byte
调色板规范。对于调色板中的每个表项,这4个字节用下述方法来描述RGB的值:
1字节用于蓝色分量
1字节用于绿色分量
1字节用于红色分量
1字节用于填充符(设置为0)
图像数据
0436h
Bitmap Data
x bytes
该域的大小取决于压缩方法,它包含所有的位图数据字节,这些数据实际就是彩色调色板的索引号
zilili2000
2003-12-28
打赏
举报
回复
建议:把图像信息存入一个2维数组,
我做过24位位图保存的一个项目,其中用到的大致方法如下,希望对你有所帮助:
DWORD widthBytes=3*w;//w为宽度
while((widthBytes&3)!=0)widthBytes++;
DWORD dwsavewidthBytes=widthBytes;
DWORD dwDibBytes=dwsavewidthBytes*h;//h为高度
DWORD dwFileSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+dwDibBytes;
DWORD dwOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
BITMAPFILEHEADER bf;
bf.bfType=0x4d42;
bf.bfSize=dwFileSize;
bf.bfOffBits=dwOffBits;
bf.bfReserved1=0;
bf.bfReserved2=0;
BITMAPINFOHEADER bmInfo;
bmInfo.biSize=sizeof(BITMAPINFOHEADER);
bmInfo.biWidth=w;
bmInfo.biHeight=h;
bmInfo.biPlanes=1;
bmInfo.biBitCount=(DWORD)24;//24位
bmInfo.biCompression=0;
bmInfo.biSizeImage=0;
bmInfo.biXPelsPerMeter=0;
bmInfo.biYPelsPerMeter=0;
bmInfo.biClrUsed=0;
bmInfo.biClrImportant=0;
CFile file;
file.Open(filename,CFile::modeCreate | CFile::modeReadWrite | CFile::shareExclusive);
file.Write(&bf,sizeof(BITMAPFILEHEADER));
file.Write(&bmInfo,sizeof(BITMAPINFOHEADER));
DWORD dwLength=3*w;//24位位图,每个像素用3个字节保存;
DWORD dwDibWidthBytes=(w*24+31)/32*4;//每个像素占24位;
DWORD dwBaseIndex=0;
for(int i=y;i<h;i++)
{
LPSTR lpsRaw=(LPSTR)(m_lpBuf+dwBaseIndex);
file.Write(lpsRaw,dwLength);
dwBaseIndex+=dwDibWidthBytes+3*x;
}
file.Close();
greenflash
2003-12-25
打赏
举报
回复
?? 没人知道吗?
用C#做学习型人脸识别程序(尝鲜版)
用C#做学习型人脸识别程序(尝鲜版)DEMO和源码
二进制文件是什么?到底二进制文件和纯文本文件的区别是什么?为什么图像、音频是二进制文件?
1. 二进制文件是什么? 二进制文件就是直接基于二进制形成的文件,文件中内容就是...010101...之类(也可表示成16进制),如下图所示。 2. 二进制文件和纯文本文件的区别是什么? 二进制文件是直接以二进制的值进行存储;而纯文本文件则在二进制的基础上,进行了字符编码,因此,我们看到的诸如 .txt 以及程序文件都是字符形式。 3. 为什么图像、音频是二进制文件? 因为二进制文件直接使用二进制进行表示,要比文本文件更加节省存储空间 ...
ps新建、打开和保存
图像文件
新建、打开和保存
图像文件
新建
图像文件
新建一个
图像文件
,有几种途径,可以在photoshop 的文件菜单中点击新建,也可以通过快捷键ctrl+N键来实现。 然后设置弹出的新建文件对话框,选择图像尺寸的单位,输入图像的高、宽及分辨率。在新建的图像对话框中选择新图像的背景颜色:可选白色、工具盘中的背景色或透明色。在名称框中输入新建图像的文件名,最后单击“好”按钮。 打开和保存
图像文件
打开
图像文件
photoshop可以打开和导入多种文件格式的图像。可用的格式显示在文件浏览器、“打开”对话框、“打开为”对话框
如何在Matlab中将绘图保
存为
图像或向量图形文件?
在上述代码中,gcf函数返回当前图形的句柄,后面的参数’sin_wave.png’指定了要保存的文件名,最后一个参数’png’表示要将图像保
存为
PNG格式的文件。通过使用saveas和print函数,您可以方便地将Matlab图形保
存为
不同格式的图像或向量图形文件,以便进一步使用和处理。在上述代码中,‘sin_wave.eps’是要保存的文件名,’-depsc2’表示将图像保
存为
EPS格式的文件。下面是一个简单的例子,在该例子中,我们将绘制一张正弦波,并将其保
存为
PNG格式的
图像文件
。
利用文件保存
数据
(c语言)
将
数据
储存到本地文件 环境:CentOS7 文件后缀 .doc(Word文件)、.txt(文本文件)、.dat(
数据
文件)、.c(C语言源程序文件)、.cpp(C++源程序文件)、.for(FORTRAN语言源程序文件)、.pas(Pascal语言源程序文件)、.obj(目标文件)、.exe(可执行文件)、.ppt(电子幻灯文件)、.bmp(图形文件)、.jpg(
图像文件
)。 文件类型 程序文件(可执行)
数据
文件(ASCII文件和二进制文件) ①ASCII文件:文本文件,每一个字节存放一个字符ASCII
机器视觉
4,499
社区成员
15,365
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章