回 帖 发 新 帖 刷新版面

主题:tjestar帮忙

  你好,一共有三四个问题,求帮忙!!!!
    With BITMAP
        .bmiHeader.biSize = 40   '这是什么意思???
    End With
If GetDIBits(Picture1.hdc, Picture1.Picture.Handle, 0, 0, 0, BITMAP, DIB_RGB_COLORS) <> 0 Then      '获取图像位图数据大小
        ReDim ImgData(BITMAP.bmiHeader.biSizeImage / 3, 2) '重定义数组准备接收位图数据
        If GetDIBits(Picture1.hdc, Picture1.Picture.Handle, 0, BITMAP.bmiHeader.biHeight - 1, ImgData(0, 0), BITMAP, DIB_RGB_COLORS) <> 0 Then    '正式获取位图数据并将数据存入定义的数组中
            '注意数组中颜色分量的存储顺序为:B、G、R(并不是R、G、B),如果你需要对图像进行处理只需改变数组中的数据即可完成
            
            '**************** 下面这段程序是将图像亮度变暗(只作为演示,其它效果你可以自己动手做)     ?????请再给出其他的一些效果???? ***********************
            '注意:第一条扫描线的位置是从左下角开始
            
            
            'ImgData(X,0)中保存的为蓝色分量值
            'ImgData(X,1)中保存的为绿色分量值
            'ImgData(X,2)中保存的为红色分量值
            
            For lIndex = 0 To BITMAP.bmiHeader.biSizeImage / 3
                
                ImgData(lIndex, 0) = (ImgData(lIndex, 0) + ImgData(lIndex, 0)) / 2 '溢出why? I donnot understand???????
                ImgData(lIndex, 1) = (ImgData(lIndex, 0) + ImgData(lIndex, 1) + ImgData(lIndex, 2)) / 3
                ImgData(lIndex, 2) = (ImgData(lIndex, 0) + ImgData(lIndex, 1) + ImgData(lIndex, 2)) / 3
                  
               
                
            Next
            '*********************************************************************
            SetDIBits Picture2.hdc, Picture2.Image.Handle, 0, BITMAP.bmiHeader.biHeight - 1, ImgData(0, 0), BITMAP, DIB_RGB_COLORS '将位图数据写入PICTURE2中
        End If

回复列表 (共11个回复)

11 楼

假设你的图像数据存储于bmpdata数组,那么:
dim i as long, j as long

For i = 0 To BITMAP.bmiHeader.biSizeImage - 1 Step 3
r=bmpdata(i):g=bmpdata(i+1):b=bmpdata(i+2)
pix(j)=rgb(r,g,b)
j=j+1
next

我来回复

您尚未登录,请登录后再回复。点此登录或注册