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

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


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

自定义1:

    '自定义1    'http://blog.csdn.net/uruseibest    Private Sub btnCustom1_Click(sender As Object, e As EventArgs) Handles btnCustom1.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 = rgbvalues(pos + 1)                R = rgbvalues(pos + 2)                Select Case getMax(R, G, B)                    Case "r"                        R = 255                        G = 0                        B = 0                    Case "g"                        R = 0                        G = 255                        B = 0                    Case Else                        R = 0                        G = 0                        B = 255                End Select                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
自定义2:

    '自定义2    'http://blog.csdn.net/uruseibest    Private Sub btnCustom2_Click(sender As Object, e As EventArgs) Handles btnCustom2.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 = rgbvalues(pos + 1)                R = rgbvalues(pos + 2)                Select Case getMax(R, G, B)                    Case "r"                        R = R                        G = 0                        B = 0                    Case "g"                        R = 0                        G = G                        B = 0                    Case Else                        R = 0                        G = 0                        B = B                End Select                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
自定义3:

    '自定义3    'http://blog.csdn.net/uruseibest    Private Sub btnCustom3_Click(sender As Object, e As EventArgs) Handles btnCustom3.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 = rgbvalues(pos + 1)                R = rgbvalues(pos + 2)                Select Case getMax(R, G, B)                    Case "r"                        R = R                        G = R                        B = R                    Case "g"                        R = G                        G = G                        B = G                    Case Else                        R = B                        G = B                        B = B                End Select                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
原创粉丝点击