Funcion GDI+ para recortar una imagen
Jueves, 25 de Enero de 2007El 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