Portal Chamar Táxi

[Manual] Gerando Thumbnail

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Falaremos neste artigo sobre como gerar Thumbnail, ou seja, miniaturas de imagens a partir de uma outra imagem que iremos chamar de imagem original, utilizando VB.Net.

Usando Thumbnail não precisamos ficar editando fotos e diminuindo o seu tamanho. O artigo que vocês irão ler agora ensina como gerar Thumbnail de uma forma muito fácil e dinâmica. O código é de fácil compreensão.

Quando eu desenvolvi este código, pensei em fazer algo genérico, onde eu pudesse reaproveitá-lo em diversas partes do meu sistema. Então eu criei uma página chamada de Thumbnail.aspx que recebe apenas 2 parâmetros: o nome da imagem (Logo.jpeg) e a largura (100) que o Thumbnail deverá ser criado.

Crie um novo WebForm, dê o nome de Thumbnail.Aspx, e uma pasta chamada imagens. Dentro da pasta imagens, coloque uma imagem de sua escolha e siga código abaixo.

No evento Page_Load chamamos a função GeraThumbnail passando os parâmetros obrigatórios para o Thumbnail ser gerado
Ex: Thumbnail.aspx?NomeImagem=Logo.jpej&Largura=100
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

' Fazemos apenas uma verificação de segurança para saber se o nome da imagem foi passado
If Request.QueryString("NomeImagem") <> "" Then
GeraThumbnail(Request.QueryString("NomeImagem"), Request.QueryString("Largura"))
Else
Response.Write("Você deve passar o nome da imagem via QueryString.<br>Ex: Thumbnail.aspx?NomeImagem=Logo.jpej&Largura=100")
End If

End Sub

'Função responsável por gerar o Thumbnail
'Está função recebe 2 parâmetros Nome da imagem (Ex. Logo.Jpeg) e a largura que o Thumbnail deverá ser criado (Ex.100).
Sub GeraThumbnail(ByVal NomeImagem, ByVal Largura)

' Inicializando os Objetos
Dim objImage, objThumbnail As System.Drawing.Image
Dim strServerPath, strFilename As String
Dim shtWidth, shtHeight As Short
' Apontamos a pasta onde se encontram as imagens no formato original, caso esteja na raiz use apenas ("\")
' Será a partir da imagem original que vamos gerar os Thumbnail
strServerPath = Server.MapPath("Imagens\")
' Pegamos o nome da imagem que foi passado via QueryString
strFilename = strServerPath & NomeImagem
' Fazemos o tratamento de erro, caso a imagem passada na QueryString não exista no
' diretório original, então colocamos uma imagem de erro no lugar da imagem original
Try
' Busca a imagem no diretório
objImage = objImage.FromFile(strFilename)
Catch
' Caso a imagem não exista, colocamos uma imagem de erro
objImage = objImage.FromFile(strServerPath & "error.gif")
End Try
' Caso tenhamos passado uma Largura na QueryString, a largura será respeitada, caso contrário, foi definido que a largura do Thumbnail sera 100px
If Largura = Nothing Then
shtWidth = objImage.Width
ElseIf Largura < 1 Then
shtWidth = 100 'Caso não for passado a largura na QueryString então a largura sera de 100px
Else
shtWidth = Largura 'Caso você tenha definido uma largura na QueryString então sera respeitada
End If
' Fazemos um redimensionamento proporcional da imagem entre largura e altura
shtHeight = objImage.Height / (objImage.Width / shtWidth)
' Neste momento, estaremos criando o Thumbnail
objThumbnail = objImage.GetThumbnailImage(shtWidth, shtHeight, Nothing, System.IntPtr.Zero)
' Definimos o ContentType para jpeg
Response.ContentType = "image/jpeg"
' Enviamos o Thumbnail para o Cliente
objThumbnail.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg)
' Destruímos os Objetos que foram criados
objImage.Dispose()
objThumbnail.Dispose()

End SuB

Para gerar o Thumbnail use: Thumbnail.aspx?NomeImagem=Logo.jpej&Largura=100

Para fazer o download do código clique aqui
 
Topo