计算机二级VisualBasic辅导:VB图像处理之像素的获取和输出
来源:优易学  2010-1-15 16:03:37   【优易学:中国教育考试门户网】   资料下载   IT书店

  要处理一个图像,首先要获得该图像的像素值,而VB本身提供的PICTURE控件虽然可以打开很多类型的图片,但是它提供的那个POINT方法读取像素实在是太慢。而使用GetPixel这个API的速度也快不到哪里去,因为PIONT方法本身就是对于GetPixel的一个包装。
  在VB中要快速获取一幅在PICTURE中打开的图像比较快速的方法是使用DIB方法,当然还有DDB方法,不过使用DDB方法还需要考虑不同颜色深度的图像的分别处理,在程序的实现上要相对复杂,而使用DIB方法则不必,并且在处理速度上比DDB方法也慢的有限。
  过程一:获得一个在PICTURE控件中打开的图像的所有像素。
  Public Sub DibGet(ByVal IdSource As Long, XBegin As Long, ByVal YBegin As Long, ByVal XEnd As Long, ByVal YEnd As Long)
  Dim iBitmap As Long
  Dim iDC As Long
  Dim I As LongDim
  Dim W As Long
  Dim H As Long
  On Error GoTo ErrLine
  Done = False
  TimeGet = timeGetTime
  InPutWid = XEnd - XBegin
  InPutHei = YEnd - YBegin
  W = InPutWid + 1
  H = InPutHei + 1
  I = (Bits \ 8) - 1
  ReDim ColVal(I, InPutWid, InPutHei)
  With bi24BitInfo.bmiHeader
  .biBitCount = Bits
  .biCompression = 0&
  .biPlanes = 1
  .biSize = Len(bi24BitInfo.bmiHeader)
  .biWidth = W
  .biHeight = H
  End With
  iBitmap = GetCurrentObject(IdSource, 7&)
  GetDIBits IdSource, iBitmap, 0&, H, ColVal(0, 0, 0), bi24BitInfo, 0& DeleteObject iBitmap
  Done = True
  TimeGet = timeGetTime - TimeGetExit Sub
  ErrLine:
  MsgBox "错误号:" & Err.Number & ":" & Err.Description
  End Sub

[1] [2] [3] [4] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训