Tuesday, June 27, 2006

Redimensionar uma imagem

As vezes precisavamos trabalhar com imagens e mudar o seu tamanho, devido ao seu tamanho e esta ser pesada, para isso podemos trabalhar com uma imagem, vou demostrar 2 exemplos.
O primeiro será para guardar fisicamente no servido a segunda será para guardar na Base de Dados

1.

'1.1 encontra o nome do ficheiro a fazer upload e transforma em fluxo de informação
Dim ImageStream As Stream = ImageLocation.PostedFile.InputStream

'1.2 transforma esse fluxo numa variavel de imagem
Dim tamanho As System.Drawing.Image = System.Drawing.Image.FromStream(ImageStream)

Dim retorna As System.Drawing.Image.GetThumbnailImageAbort = false

'1.3 indica-se as novas dimensoes da imagem
Dim imagem As System.Drawing.Image = tamanho.GetThumbnailImage(imageWidth, imageHeight, retorna, IntPtr.Zero)

'1.4 guarda a imagem num espaço fisico, com uma extenção .png
retorna.Save(Request.PhysicalApplicationPath + "pics\minhaimagem" , ImageFormat.Png)

'1.5 liberta a memoria reservada no IIS
retorna.Dispose()

2.

'2.1 encontra o nome do ficheiro a fazer upload e transforma em fluxo de informação
Dim ImageStream As Stream = ImageLocation.PostedFile.InputStream

'2.2 transforma esse fluxo numa variavel de imagem
Dim tamanho As System.Drawing.Image = System.Drawing.Image.FromStream(ImageStream)

Dim retorna As System.Drawing.Image.GetThumbnailImageAbort = false

'2.3 indica-se as novas dimensoes da imagem
Dim imagem As System.Drawing.Image = tamanho.GetThumbnailImage(imageWidth, imageHeight, retorna, IntPtr.Zero)

Dim imageS1 As MemoryStream = New MemoryStream

'2.4 associamos a imagem ao fluxo de memoria
thumbNailImg.Save(imageS1, ImageFormat.Png)
Dim idimagem(imageS1.Length) As Byte
imageS1.Position = 0

'2.5 envia para byte o fluxo de informação
imageS1.Read(idimagem, 0, CInt(ImageStream.Length))
Post a Comment