Funcion GDI+ para invertir colores de una imagen

El código siguiente invierte los colores de una imagen. El objetivo es aprender a usar las funciones GetPixel y SetPixel. Es muy sencillo.

Public Function invertirColor(ByVal c As Color) As Color

‘Esta función invierte un color restando cada RGB a 255, devolviendo un color invertido

Return Color.FromArgb(System.Math.Abs(255 - c.R), System.Math.Abs(255 - c.G), System.Math.Abs(255 - c.B))

End Function

Public Function invertirColoresImagen(ByVal img as Image) As Image

Dim i, j As Integer

‘Generamos un Bitmap a partir de la imagen

Dim bm As New Bitmap(img)

‘Por cada pixel del bitmap vamos a asignarle su inversa

For i = 0 To bm.Size.Width - 1

For j = 0 To bm.Size.Height - 1

‘Color original

Dim color1 As Color = bm.GetPixel(i, j)

‘Color original invertido

Dim colorN As Color = invertirColor(color1)

Asignamos el nuevo color al pixel actual

bm.SetPixel(i, j, colorN)

Next

Next

Return bm

End Sub

invertirimagen.zip

3 comentarios sobre “Funcion GDI+ para invertir colores de una imagen”

  1. Carlos Utrera dijo:

    Esta bien, pero quizas sea mas óptimo realizar operacion de bits directamente, o sea una negacion bit a bit.

  2. Jesus Utrera dijo:

    Pero lo que hay que hacer no es negar los bits, únicamente coger el color del pixel en cuestión y cambiar el color. Ciertamente, hay mejores formas seguro.

  3. Black dijo:

    Black…

    Cool! Its really cool….

Deje un comentario

Debe identificarse para enviar un comentario.


Mi Blog está gestionado con WordPress Entradas (RSS) y Comentarios (RSS).