Archivo de Enero de 2007

Funcion GDI+ para recortar una imagen

Jueves, 25 de Enero de 2007

El código siguiente recorta una imagen. Vamos a enrar a usar el objeto Graphics y también tocaremos los Stream (herramienta muy interesante para guardar imágenes).

 

Private Function recortaImagen(ByVal imagen As Image, ByVal posicion As Point, ByVal tamaño As Size) As Image

      ‘Creamos un objeto bitmap con resolución 72 píxeles por pulgada y tamaño el pasado como argumento

      Dim bmFoto As Bitmap = New Bitmap(tamaño.Width, tamaño.Height)

      bmFoto.SetResolution(72, 72)

      ‘Creamos un objeto Graphics y le asignamos el Bitmap creado

      Dim grFoto As Graphics = Graphics.FromImage(bmFoto)

      ‘Le proporcionamos las siguientes propiedades

      grFoto.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias

      grFoto.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic

      grFoto.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality

      ‘Con esto recortamos la imagen con tamaño el dado

      grFoto.DrawImage(imagen, New Rectangle(posicion, tamaño), New Rectangle(New Point(200, 200), tamaño), _ GraphicsUnit.Pixel)

      ‘Ahora lo guardamos en un MemoryStream para guardar los cambios

      Dim mm As System.IO.MemoryStream = New System.IO.MemoryStream

      bmFoto.Save(mm, System.Drawing.Imaging.ImageFormat.Jpeg)

      ‘Liberamos los objetos usados

      imagen.Dispose()

      bmFoto.Dispose()

      grFoto.Dispose()

      ‘Devolvemos el valor

      Dim img As Image = New Bitmap(mm)

      Return img

End Function

Ejemplo codigop

Funcion GDI+ para invertir colores de una imagen

Jueves, 25 de Enero de 2007

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


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