如何在VB中逐像素生成一个bmp文件?

已有一个二维数组DimP(255,255)AsByte它的具体数值已经计算好了。现要求生成一个256*256的bmp图片,而P(x,y)就是它的(x,y)位置的像素的亮度... 已有一个二维数组
Dim P(255, 255) As Byte
它的具体数值已经计算好了。现要求生成一个256*256的bmp图片,而P(x, y)就是它的(x, y)位置的像素的亮度(从黑到白),生成后直接储存到“D:\”中。
因为实际生成的图片很大,所以要求不能在PictureBox中用Graphic方法绘图,而是直接按源代码生成并储存。该怎么办?
展开
 我来答
网海1书生
科技发烧友

2018-11-17 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26230

向TA提问 私信TA
展开全部
Private Type BMP_File_Header
    fileType As Integer
    fileLength As Long
    reserve As Long
    offset As Long
End Type

Private Type BMP_Info_Header
    infoLength As Long
    width As Long
    height As Long
    plane As Integer
    pixBits As Integer
    compress As Long
    dataLength As Long
    H_res As Long
    V_res As Long
    colorNumber As Long
    impColor As Long
End Type

Private Sub Form_Load()
Dim bfh As BMP_File_Header
Dim bih As BMP_Info_Header
Dim ct(3, 255) As Byte
Dim P(255, 255) As Byte
Dim i As Long, j As Long
bfh.fileType = &H4D42
bfh.offset = Len(bfh) + Len(bih) + 4 * 256
bih.dataLength = &H100& * &H100&
bfh.fileLength = bfh.offset + bih.dataLength  '图片文件大小
bih.infoLength = Len(bih)
bih.width = 256   '图片宽度
bih.height = 256   '图片高度
bih.plane = 1
bih.pixBits = 8   '每像素位数
bih.compress = 0
bih.H_res = &HB12
bih.V_res = &HB12
bih.colorNumber = 256
bih.impColor = 0
For i = 0 To 255  '产生256级的灰度调色板
    ct(0, i) = i
    ct(1, i) = i
    ct(2, i) = i
    ct(3, i) = 0
Next
For j = 0 To 255   '这里是生成一个256*256的位图数据,你有现成的数据就可直接用
    For i = 0 To 255
        P(i, j) = i
    Next
Next
Open "d:\test.bmp" For Binary As #1
Put #1, , bfh
Put #1, , bih
Put #1, , ct
Put #1, , P
Close #1
MsgBox "OK"
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式