Como generar imagenes en ASP.net

Hoy estoy prolifico. O no tengo ganas de hacer nada más.
 
Una de las cosas que me rompió la cabeza cuando empecé a trabajar con ASP (No .Net), era encontrar imágenes donde su origen de datos era algo así: MiPagina.ASP?ImagenID=23848
 
Finalmente comprendí que esta página retornaba la imagen, básicamente transformándose en esta. O sea, en vez de ser un texto con HTML, era un archivo binario con el contenido de la imagen.
 
Lo mismo, puede ser realizado en .Net, así que aquí les va el código de esta página, la cual retorna imágenes basadas en los estilos de rellenos de windows.
 
Como aclaración, la página en si, o sea, el HTML, no debe contener ningún tag HTML, ni espacios, de esta forma nos aseguramos que el resultado será esta imagen, y no algún caracter extraño.
 
La página en cuestión, necesita de un par de parametros, los cuales deben ser pasados por GET.
 
Estos son:
  • Style; El estilo del enumerado HatchStyle
  • Color1; En formato Win32
  • Color2; En formato Win32
Espero que les sirva.
 

Imports

System.Drawing

Imports

System.Drawing.Imaging

Imports System.Drawing.Drawing2D

Public

Class GenerateComboBars

   Inherits System.Web.UI.Page

   Private

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

      Dim lngWidth As Long

      Dim lngHeight As Long

      Dim Color1 As Long

      Dim Color2 As Long

      Dim lngFillStyle As Long = 0

      lngHeight = 20

      lngFillStyle =

CLng(Request.QueryString("Style"))

      Color1 = Request.QueryString("Color1")

      Color2 = Request.QueryString("Color2")

      lngWidth = 20

      Dim b As New System.Drawing.Bitmap(lngWidth, lngHeight, PixelFormat.Format16bppRgb555)

      Dim g As Graphics = Graphics.FromImage(b)

      Select Case lngFillStyle

         Case 1

            ‘Gradient Fill

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias

‘ antialias objects

            g.FillRectangle(

New LinearGradientBrush(New Point(0, 0), New Point(b.Width, b.Height), ColorTranslator.FromWin32(Color1), ColorTranslator.FromWin32(Color2)), 0, 0, b.Width, b.Height)

         Case 2

            ‘Thin Thatch

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias

‘ antialias objects

            Dim hBrush1 As HatchBrush = New HatchBrush(HatchStyle.Percent20, ColorTranslator.FromWin32(Color1), Color.White)

            g.FillRectangle(hBrush1, 0, 0, b.Width, b.Height)

         Case 3

            ‘Medium Thatch

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias

‘ antialias objects

            Dim hBrush1 As HatchBrush = New HatchBrush(HatchStyle.Percent25, ColorTranslator.FromWin32(Color1), Color.White)

            g.FillRectangle(hBrush1, 0, 0, b.Width, b.Height)

         Case 4

            ‘Thick Thatch

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias

‘ antialias objects

            Dim hBrush1 As HatchBrush = New HatchBrush(HatchStyle.Percent30, ColorTranslator.FromWin32(Color1), Color.White)

            g.FillRectangle(hBrush1, 0, 0, b.Width, b.Height)

         Case 5

            ‘Back Diagonal Lines

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias

‘ antialias objects

            Dim hBrush1 As HatchBrush = New HatchBrush(HatchStyle.ForwardDiagonal, ColorTranslator.FromWin32(Color1), Color.White)

            g.FillRectangle(hBrush1, 0, 0, b.Width, b.Height)

         Case 6

            ‘Forward Diagonal Lines

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias

‘ antialias objects

            Dim hBrush1 As HatchBrush = New HatchBrush(HatchStyle.BackwardDiagonal, ColorTranslator.FromWin32(Color1), Color.White)

            g.FillRectangle(hBrush1, 0, 0, b.Width, b.Height)

         Case 7

            ‘Diagonal Cross Lines

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias

‘ antialias objects

            Dim hBrush1 As HatchBrush = New HatchBrush(HatchStyle.DiagonalCross, ColorTranslator.FromWin32(Color1), Color.White)

            g.FillRectangle(hBrush1, 0, 0, b.Width, b.Height)

         Case 8

            ‘Vertical Lines

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias ‘ antialias objects

            Dim hBrush1 As HatchBrush = New HatchBrush(HatchStyle.LightVertical, ColorTranslator.FromWin32(Color1), Color.White)

            g.FillRectangle(hBrush1, 0, 0, b.Width, b.Height)

         Case 9

            ‘Horizontal Lines

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias ‘ antialias objects

            Dim hBrush1 As HatchBrush = New HatchBrush(HatchStyle.LightHorizontal, ColorTranslator.FromWin32(Color1), Color.White)

            g.FillRectangle(hBrush1, 0, 0, b.Width, b.Height)

         Case 10

            ‘Cross Lines

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias

‘ antialias objects

            Dim hBrush1 As HatchBrush = New HatchBrush(HatchStyle.Cross, ColorTranslator.FromWin32(Color1), Color.White)

            g.FillRectangle(hBrush1, 0, 0, b.Width, b.Height)

         Case Else

            g.Clear(ColorTranslator.FromWin32(Color1))

            g.SmoothingMode = SmoothingMode.AntiAlias

‘ antialias objects

      End Select

      Response.ContentType = "image/Jpeg"

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

      b.Dispose()

   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