Conheça o Plugfeed | » Início » Programação » Plataforma DOT NET » Gerando Thumbnail de Imagens
Conheça o Plugfeed | » Início » Programação » Plataforma DOT NET » Gerando Thumbnail de Imagens -->
 
Avaliação: | Publicado em: 03/11/2006
Gerando Thumbnail de Imagens
Fabrizio Gianfratti Fabrizio Gianfratti trabalha com desenvolvimento desde 1995 e desenvolve com ASP,ASP.NET (VB.Net, C#),JavaScript,SQl SERVER. Tem grande experiência no desenvolvimento de portais e ferramentas de gerenciamento de conteúdo, atualmente trabalha como WebDeveloper em projetos para desenvolvimento de sistemas na a área hospitalar. Disponibiliza muitas informações em seu site www.gianfratti.com
Gerando Thumbnail de Imagens

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

Faça o download do código logo abaixo.

Bom, é isso pessoal, espero que tenham gostado da matéria e, principalmente, que tenha sido útil a todos.

Arquivos anexos ao artigo

Rodrigo
Legal a matéria. Bem objetiva e explicativa.
Cristian <clopes@tv1.com.br>
Opa Fabrizio, tudo bem ? Então achei mto interessante seu artigo, tentei rodar aqui mas não funcionou... no Inherits ele procura algo a ver com SMART....
Felipe Drumond
O método GetThumbnailImage gera uma imagem com qualidade reduzida, mas é mesmo muito bom para coisas rotineiras. Mas para manter a mesma qualidade é preciso criar um Bitmap, ler a imagem original para ele e então salvar no tamanho desejado.
Paulo Carvalho <brazeiro001@hotmail.com>
Obrigado por dividir teus conhecimentos.
to começando a programar agora
queria algumas dicas pra começar a programar em dot.net se poder
ne ajudar obrigado!!!!!!!!!vlw.....








Um produto Detetive.net