如何生成只带文件头信息的单色BMP文件?顶者有分 ( 积分: 200 )

  • 主题发起人 tanjunqing
  • 开始时间
T

tanjunqing

Unregistered / Unconfirmed
GUEST, unregistred user!
我已有些十六进制的BMP图形数据(共有4096个字节),但没有带文件头信息,请问如何才能生成一个带文件头信息的BMP文件,然后往里面加入自已的图形数据,又可如何加入数据呢..分不够可再加.
 
T

tanjunqing

Unregistered / Unconfirmed
GUEST, unregistred user!
我已有些十六进制的BMP图形数据(共有4096个字节),但没有带文件头信息,请问如何才能生成一个带文件头信息的BMP文件,然后往里面加入自已的图形数据,又可如何加入数据呢..分不够可再加.
 
M

moonight59

Unregistered / Unconfirmed
GUEST, unregistred user!
帮你顶一下
顺便问一个相关的,如何生成一个空的声音文件(.wav),就像点右键新建的一个声音文件一样,大小是58字节的。
 

独帅

Unregistered / Unconfirmed
GUEST, unregistred user!
看来楼主是想根据现有的BMP图形数据生成BMP文件了,可以这样考虑:
var
bmp: TBitmap;
i, j: Integer;
begin
bmp:=TBitmap.Create;
//你的数据为4096个字节,我就假设是64*64了
bmp.Width :=64;
bmp.Height:=64;
for i:=0 to bmp.Height-1do
for j:=0 to bmp.Width-1do
bmp.Canvas.Pixels[i, j]:=$FF;//在这把你的数据写入就行了
bmp.SaveToFile('C:/test.bmp');
bmp.Free;
end;

另外,如果你的数据的格式是符合BMP文件格式的话,可以直接用bmp.ScanLine写入数据,速度会更快一些,类似下面写法:
for i:=0 to bmp.Height-1do
Move(dataptr, PByte(bmp.ScanLine)^, bmp.Width);
 

独帅

Unregistered / Unconfirmed
GUEST, unregistred user!
to moonight59: 实现你的要求更简单了,点右键新建一个声音文件,把这个文件的内容记下来保存在你程序里面就是了,反正一共才58个字节,占用不了多少空间。用的时候把这58个字节写入一个文件就可以了。[:D]
 
T

tanjunqing

Unregistered / Unconfirmed
GUEST, unregistred user!
to 独帅:
bmp.Canvas.Pixels[i, j]:=$FF;//在这把你的数据写入就行了
我的数据是字符串的'0F 45 01'的十六进制的形式的,
就不能直接放到上面了,
如何取出来再放到上面这句程序中.
另外,这个图像显示出来如何放大呢>
谢!
 
T

tanjunqing

Unregistered / Unconfirmed
GUEST, unregistred user!
没有回答吗?
Move(dataptr, PByte(bmp.ScanLine)^, bmp.Width);中dataprt变量如何取值
 

雪狐狸

Unregistered / Unconfirmed
GUEST, unregistred user!
不会...:)
帮你顶一下
 
T

tanjunqing

Unregistered / Unconfirmed
GUEST, unregistred user!
哎,我每次来大富翁均没有得到满意的答复,这真的只大富翁吗?
即然没有人回答,就把分散了算了.
如果还有人来解答,可以来此处取分.
若是真的可以解答,我可另加分.
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3085604
 
T

tanjunqing

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

独帅

Unregistered / Unconfirmed
GUEST, unregistred user!
现在只知道你的数据是十六进制的字符串形式的,但是不知道你的数据具体是什么含义,包括图片的大小以及图形内容和你的数据的对应关系都不知道
我前面的程序,意思是生成一个64*64的bmp对象,一共有4096个像素点了,你用你的数据给这些点分别赋值也就是分别填上颜色就可以了
 

Similar threads

D
回复
0
查看
789
DelphiTeacher的专栏
D
D
回复
0
查看
758
DelphiTeacher的专栏
D
D
回复
0
查看
841
DelphiTeacher的专栏
D
D
回复
0
查看
682
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部