20 jan 2010 @ 2:06 PM 

 

Parâmetros do sistema:

. Atualizado diretamente do sistema de gestão de imobiliárias SINAI.
. As fotos são enviadas “como estão”, sem nenhum tipo de tratamento anterior.

O problema:

Exibir as fotos dos imóveis em tamanho compatível com o layout proposto e diminuir o tamanho, em bytes, da imagem exibida.

A solução:


Criar uma página que redimensione as imagens através dos parâmetros
. Caminho da imagem
. Largura imagem
e envie diretamente para o browser do visitante.

Desenvolvendo a solução (usando VB.NET):

. Crie um novo projeto “ASP.NET Web Application” no Visual Studio
. Após a criação do projeto crie uma pasta para armazenar as imagens (o nome fica por sua conta).
. Crie uma nova página ASPX e renomeie para ShowThumb.aspx

O código fonte (ShowThumb.aspx.vb) para esta página segue abaixo:


Imports System.Drawing.Imaging
Imports System.IO

Public Class ShowThumb
Inherits System.Web.UI.Page

#Region ” Web Form Designer Generated Code “

‘This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

‘NOTE: The following placeholder declaration is required by the Web Form Designer.
‘Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
‘CODEGEN: This method call is required by the Web Form Designer
‘Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
‘MUDE CONTENT TYPE CASO VOCÊ UTILIZE OUTROS TIPOS DE IMAGEM
Response.ContentType = “image/jpeg”
generateThumb(Request.QueryString(“img”), Integer.Parse(Request.QueryString(“width”)))
End Sub

Public Sub generateThumb(ByVal ImgUrl As String, ByVal ImageWidth As Integer)
‘VERIFICA SE O PARÂMETRO CAMINHO DA IMAGEM FOI FORNECIDO
If ImgUrl <> “” Then
‘RECUPERA O CAMINHO FISICO DA IMAGEM NO DISCO
Dim PathArquivo = Server.MapPath(ImgUrl)
If File.Exists(PathArquivo) Then
Try

CRIA UM NOVO BITMAP A PARTIR DA IMAGEM FORNECIDA
Dim bm As Bitmap = System.Drawing.Image.FromFile(PathArquivo)

‘DECLARA A NOVA LARGURA DA IMAGEM
Dim newWidth As Integer = ImageWidth

‘CALCULA A NOVA ALTURA A PARTIR DA LARGURA ENVIADA COMO PARÂMETRO
Dim newHeight As Integer = (newWidth / bm.Width) * bm.Height

‘CRIA UM NOVO BITMAP COM A NOVA LARGURA E ALTURA
Dim Resized As Bitmap = New Bitmap(newWidth, newHeight)

‘CRIA UM NOVO OBJETO GRÁFICO PARA EXECUÇÃO DO REDIMENSIONAMENTO
Dim g As Graphics = Graphics.FromImage(Resized)

‘REDIMENSIONA A IMAGEM ORIGINAL E SALVA NO NOVO BITMAP
g.DrawImage(bm, New Rectangle(0, 0, Resized.Width, Resized.Height), 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel)

‘LIBERA OS RECURSOS UTILIZADOS PELO OBJETO GRÁFICO
g.Dispose()

‘SALVA A IMAGEM DIRETAMENTE NO RESPONSE OBJECT (DIRETO PARA O BROWSER) NO FORMATO JPEG
‘MUDE O IMAGEFORMAT AQUI CASO TRABALHE COM OUTROS TIPOS DE IMAGEM
Resized.Save(Response.OutputStream, ImageFormat.Jpeg)
Catch ex As Exception
Response.Write(ex.ToString)
End Try
End If
End If
End Sub

End Class

Testando o ShowThumb.aspx:

Coloque uma imagem qualquer (JPEG) na pasta que você criou para tal, no meu exemplo estou usando uma imagem chamada PREDIO1.JPG, armazenada na pasta “IMAGENS”, que tem 500×300 pixels.

Vou redimensionar esta imagem para a largura de 250px;

. Compile seu projeto
. Abra seu browser e aponte para a pasta onde você criou o projeto. No meu caso está assim:

http://localhost/imaging/ShowThumb.aspx?img=imagens/PREDIO1.JPG&width=250

Preste atenção aos parâmetros “img” (caminho relativo da imagem em relação so ShowThumb.aspx) e width (aqui você passa o tamanho que você deseja para a imagem)

Se tudo correr bem você verá sua imagem redimensionada no seu browser.

Você pode usar o ShowThumb.aspx como source das suas imagens. Basta apontar os parâmetros corretamente e você terá um redimensionador genérico e muito versátil.

Ex: <img src=’ShowThumb.aspx?img=imagens/PREDIO1.jpg&width=250’>


Para ver este sistema em funcionamento no mundo real acesse o site:

http://www.solidaimobiliaria.com.br

João Márcio Gonçalves Prado é empresário, dono da Magix Tecnologia e presta serviços de criação de websites e sistemas para internet.

Certificado Microsoft desde de 2003.
Contato: magix@magix.inf.br

Posted By: antonio
Last Edit: 20 jan 2010 @ 02:06 PM

EmailPermalink
Tags


 

Responses to this post » (None)

 
Post a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


 Last 50 Posts
Change Theme...
  • Users » 9
  • Posts/Pages » 6
  • Comments » 0
Alterar o tema...
  • VoidVoid
  • LifeLife
  • EarthEarth
  • WindWind « Default
  • WaterWater
  • FireFire
  • LightLight

Sobre



    No Child Pages.

Grupo de Discussão



    No Child Pages.