Este ejemplo utiliza una técnica un tanto básica, ya que recorre una carpeta con imagenes y crea dentro de una carpeta temporal las miniaturas que despues muestra. Una evolución de este ejemplo es crearnos una galería con las miniaturas sin necesidad de almacenarlas previamente en el disco
En cuanto a la presentación de las miniaturas las vuelca directamente a la página, sin necesidad de ningún control contenedor, únicamente por simplificar el código
Más información sobre este método en http://msdn.microsoft.com/es-es/library/system.drawing.image.getthumbnailimage.aspx
Instrucciones
- En un sitio web de asp.net añadir una nueva página (web form) con el nombre GaleriaImagenes
- Crear una carpeta con el nombre "imagenes" y dentro de esta carpeta, crear otra con el nombre "tmp"
- Colocar algunas fotos en formato jpg dentro de la carpeta "imagenes"
- Copiar este código sustituyendo el existente en el archivo GaleriaImagenes.aspx.vb
- Ejecutar la página
Imports System.IO 'espacio de nombres con las clases para recorrer carpetas
Imports System.Drawing ' espacio de nombres con las clases relacionadas con las imagenes
Partial Class GaleriaImagenes
Inherits System.Web.UI.Page
'recorro la carpeta de imagenes creando una miniatura para cada imagen
Protected Function CargarGaleria() As Boolean
'creo un objeto asociado a la carpeta que quiero recorrer
Dim Dinfo As New IO.DirectoryInfo(Server.MapPath("imagenes"))
'creamos un objeto asociado al procedimiento (addressOff) que estamos utilizando para el caso de que se tenga que cancelar la ejecución del método GetThumnail de la imagen
Dim myCallback As Image.GetThumbnailImageAbort = New Image.GetThumbnailImageAbort(AddressOf CargarGaleria)
'para cdad imagen que hay en la carpeta y que sea del tipo jpg creamos un objeto bmp
'y utilizamos despues el método getThumnailImage para crear la miniatura
For Each im As IO.FileInfo In Dinfo.GetFiles("*.jpg")
Dim bmp As New Bitmap(im.FullName)
Dim nuevoBmp As Bitmap = bmp.GetThumbnailImage(bmp.Width / 4, bmp.Height / 4, myCallback, IntPtr.Zero)
'guardo la miniatura en la carpeta temporal y creo un control imagen asociado a la miniatura
nuevoBmp.Save(MapPath("/imagenes/tmp/" & im.Name), Imaging.ImageFormat.Jpeg)
Dim mini As New UI.WebControls.HyperLink
mini.ImageUrl = "~/imagenes/tmp/" & im.Name
mini.NavigateUrl = "~/imagenes/" & im.Name
'una vez creado el control lo añado a la galeria de cotroles de la página
Me.Controls.Add(mini)
'elimino los controles
mini.Dispose()
nuevoBmp.Dispose()
Next
End Function
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
CargarGaleria()
End Sub
End Class
No hay comentarios:
Publicar un comentario