Generar imagenes miniatura

Hace unos días atras y después de ver muchos requerimientos sobre el tema, me puse en campaña para hacer algo de código simple que pueda generar imagenes en miniatura en el aire. Me encontre con la sorpresa de lo facil que resultó, especialmente despues de compararlo con código desarrollado en ASP 3.0
 
Aca vá la clase, simplmente necesitan copiarla en una página, y esta retornará la imagen en miniatura. Es importante tener en cuenta que dentro de la parte HTML de la página no debe existir ningún caracter, solo la declaración de la página en si.
 
Para llamar a la página derán hacerlo de la forma: NombreDePagina.aspx?ImagePath=[Dirección Fisica de la imagen en el servidor]
 
Por supuesto, el código puede ser facilmente modificable para que obtenga las imagenes de una base de datos, o por un ID.
 
 
 

Imports System.Drawing

Imports System.Drawing.Imaging

Imports System.Drawing.Drawing2D

 

Partial Class GenerateThumb

    Inherits System.Web.UI.Page

 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Len(Trim(Request.QueryString("ImagePath"))) <> 0 Then

            Try

                ‘Creamos una imagen basada en el archivo original

                Dim _MainBitMap As New Bitmap(Request.QueryString("ImagePath"))

                Dim oThumbnail As Image

 

                With _MainBitMap

          ‘Seteamos una resolución de DPI

          ‘Esto da la posibilidad de bajar más aún el tamaño

          ‘En KB de la imagen.

                    .SetResolution(75, 75)

          ‘La principal ventaja de .Net

          ‘Es que tiene métodos para generar las imagenes

          ‘en miniatura, en este caso de 80 x 70 pixeles

                    oThumbnail = .GetThumbnailImage(80, 70, Nothing, Nothing)

                End With

 

                Response.ContentType = "image/Jpeg"

                oThumbnail.Save(Response.OutputStream, ImageFormat.Jpeg)

            Catch

            End Try

        Else

            ‘En el caso de que la imagen no exista, mostramos una avisando esto.

            Dim _MainBitMap As New Bitmap(80, 70, PixelFormat.Format16bppRgb555)

            Dim _ErrorGraphic As Graphics = Graphics.FromImage(_MainBitMap)

 

            With _ErrorGraphic

                .Clear(Color.White)

 

                .DrawLine(New Pen(Color.Red, 1), 0, 0, 80, 0)

                .DrawLine(New Pen(Color.Red, 1), 0, 69, 80, 69)

                .DrawLine(New Pen(Color.Red, 1), 0, 0, 0, 69)

                .DrawLine(New Pen(Color.Red, 1), 79, 0, 79, 69)

 

                .DrawString("Imagen", New Font("Arial", 10, FontStyle.Regular), Brushes.Gray, 2, 5)

                .DrawString("No disponible", New Font("Arial", 10, FontStyle.Regular), Brushes.Gray, 2, 20)

            End With

 

            Response.ContentType = "image/Jpeg"

            _MainBitMap.Save(Response.OutputStream, ImageFormat.Jpeg)

        End If

    End Sub

 

End Class



Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s