vb.net 教程 5-15 图像处理之内存处理 4

来源:互联网 发布:淘宝上的杂牌手机 编辑:程序博客网 时间:2024/06/16 19:14


具体算法请参看《vb.net 教程 5-13 图像处理之像素处理 4 》

仅红色:

    '仅红色    'http://blog.csdn.net/uruseibest    Private Sub btnOnlyRed_Click(sender As Object, e As EventArgs) Handles btnOnlyRed.Click        Dim destImg As New Bitmap(sourceImg.Width, sourceImg.Height)        Dim sourceData As BitmapData = sourceImg.LockBits(New Rectangle(0, 0, sourceImg.Width, sourceImg.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb)        Dim destData As BitmapData = destImg.LockBits(New Rectangle(0, 0, sourceImg.Width, sourceImg.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb)        Dim pSource As IntPtr = sourceData.Scan0        Dim allBytes As Integer = sourceData.Stride * sourceData.Height        Dim rgbvalues() As Byte        ReDim rgbvalues(allBytes - 1)        Marshal.Copy(pSource, rgbvalues, 0, allBytes)        Dim pos As Integer = 0        Dim R, G, B As Integer        For j As Integer = 0 To sourceData.Height - 1            For i As Integer = 0 To sourceData.Width - 1                B = 0                G = 0                R = rgbvalues(pos + 2)                rgbvalues(pos) = B                rgbvalues(pos + 1) = G                rgbvalues(pos + 2) = R                pos = pos + 3            Next            pos = pos + sourceData.Stride - sourceData.Width * 3        Next        Dim pDest As IntPtr = destData.Scan0        Marshal.Copy(rgbvalues, 0, pDest, allBytes)        sourceImg.UnlockBits(sourceData)        destImg.UnlockBits(destData)        picDest.Image = destImg    End Sub

仅绿色:

    '仅绿色    'http://blog.csdn.net/uruseibest    Private Sub btnOnlyGreen_Click(sender As Object, e As EventArgs) Handles btnOnlyGreen.Click        Dim destImg As New Bitmap(sourceImg.Width, sourceImg.Height)        Dim sourceData As BitmapData = sourceImg.LockBits(New Rectangle(0, 0, sourceImg.Width, sourceImg.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb)        Dim destData As BitmapData = destImg.LockBits(New Rectangle(0, 0, sourceImg.Width, sourceImg.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb)        Dim pSource As IntPtr = sourceData.Scan0        Dim allBytes As Integer = sourceData.Stride * sourceData.Height        Dim rgbvalues() As Byte        ReDim rgbvalues(allBytes - 1)        Marshal.Copy(pSource, rgbvalues, 0, allBytes)        Dim pos As Integer = 0        Dim R, G, B As Integer        For j As Integer = 0 To sourceData.Height - 1            For i As Integer = 0 To sourceData.Width - 1                B = 0                G = rgbvalues(pos + 1)                R = 0                rgbvalues(pos) = B                rgbvalues(pos + 1) = G                rgbvalues(pos + 2) = R                pos = pos + 3            Next            pos = pos + sourceData.Stride - sourceData.Width * 3        Next        Dim pDest As IntPtr = destData.Scan0        Marshal.Copy(rgbvalues, 0, pDest, allBytes)        sourceImg.UnlockBits(sourceData)        destImg.UnlockBits(destData)        picDest.Image = destImg    End Sub
仅蓝色:

    '仅蓝色    'http://blog.csdn.net/uruseibest    Private Sub btnOnlyBlue_Click(sender As Object, e As EventArgs) Handles btnOnlyBlue.Click        Dim destImg As New Bitmap(sourceImg.Width, sourceImg.Height)        Dim sourceData As BitmapData = sourceImg.LockBits(New Rectangle(0, 0, sourceImg.Width, sourceImg.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb)        Dim destData As BitmapData = destImg.LockBits(New Rectangle(0, 0, sourceImg.Width, sourceImg.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb)        Dim pSource As IntPtr = sourceData.Scan0        Dim allBytes As Integer = sourceData.Stride * sourceData.Height        Dim rgbvalues() As Byte        ReDim rgbvalues(allBytes - 1)        Marshal.Copy(pSource, rgbvalues, 0, allBytes)        Dim pos As Integer = 0        Dim R, G, B As Integer        For j As Integer = 0 To sourceData.Height - 1            For i As Integer = 0 To sourceData.Width - 1                B = rgbvalues(pos)                G = 0                R = 0                rgbvalues(pos) = B                rgbvalues(pos + 1) = G                rgbvalues(pos + 2) = R                pos = pos + 3            Next            pos = pos + sourceData.Stride - sourceData.Width * 3        Next        Dim pDest As IntPtr = destData.Scan0        Marshal.Copy(rgbvalues, 0, pDest, allBytes)        sourceImg.UnlockBits(sourceData)        destImg.UnlockBits(destData)        picDest.Image = destImg    End Sub

学习更多vb.net知识,请参看 vb.net 教程 目录


0 0
原创粉丝点击