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
25 de Enero, 2007 - 11:05 pm
Esta bien, pero quizas sea mas óptimo realizar operacion de bits directamente, o sea una negacion bit a bit.
29 de Enero, 2007 - 9:15 pm
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.
22 de Julio, 2007 - 3:20 pm
Black…
Cool! Its really cool….