Funcion GDI+ para recortar una imagen

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

Deje un comentario

Debe identificarse para enviar un comentario.


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