Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nandotrin

Melhorar Código Para Redimensionar Imagem Em Asp.net

Recommended Posts

Boa Noite!

 

Tenho um código em asp.net que reduz a qualidade de uma certa imagem e roda perfeito, só que quero poder controlar a altura ou a largura do resultado da imagem, pois sempre gera a imagem com o tamanho original, e gostaria que ficasse em 200 pixels de largura.

 

Como implemento esse código???

<%@ Page Debug="True" %> 
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<script language="VB" runat="server">

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

Dim oCanvas As Bitmap = CType(Bitmap.FromFile("E:\vhosts\dominio.com.br\httpdocs\img\teste2.jpg"), Bitmap)
Dim encoderParams as System.Drawing.Imaging.EncoderParameters = new System.Drawing.Imaging.EncoderParameters()
Dim g As Graphics = Graphics.FromImage(oCanvas)
g.SmoothingMode = SmoothingMode.HighQuality

g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
g.SmoothingMode = SmoothingMode.HighQuality
Dim quality as long = 90
Dim encoderParam as System.Drawing.Imaging.EncoderParameter = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality)
encoderParams.Param(0) = encoderParam

Dim arrayICI as ImageCodecInfo() = ImageCodecInfo.GetImageEncoders()
Dim jpegICI as ImageCodecInfo
Dim x as integer
for x = 0 to arrayICI.Length-1

if (arrayICI(x).FormatDescription.Equals("JPEG")) then
jpegICI = arrayICI(x)
exit for
end if

next

if not jpegICI is nothing then 
oCanvas.Save(Response.OutputStream, jpegICI, encoderParams)
end if

Response.ContentType = "image/jpeg"
oCanvas.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.jpeg)

g.Dispose()
oCanvas.Dispose()
End Sub

</script>
Agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois desta linha:

g.SmoothingMode = SmoothingMode.HighQuality

Adicione as seguintes linhas:

 

Dim vSize As New Size(100, 50)
		oCanvas = New Bitmap(oCanvas, vSize)

Deixei como exemplo 100 e 50, deixa como quiser....

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Valeu mesmo, funcionou perfeitamente, coisa tão simples né e eu moscando.

 

Só uma outra pergunta, mais uma dica mesmo, esse código é bem leve pra rodar várias vezes no servidor???

Digo se muitos visitantes acessarem não vai travar nada, ou sobrecarregar????

 

Gostaria de uma dica para manter o servidor rodando o mais leve possível mesmo com trafego intenso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nandotrin o esquema para manter o sistema, sem que ele caia com muitos acessos é destruir os objetos que não serão mais usados, principalmente quando se trata de aplicações web. No seu código mesmo esta sendo feito isso:

 

g.Dispose()
oCanvas.Dispose()

Procure sempre destuir os objetos para que não fiquem armazenados na memória, esse é o esquema.

Abraços... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, muito obrigado pela resposta.

 

Agora consigo mexer na qualidade e nas dimensões graça a sua ajuda, só mais uma dúviada é possivel reduzir aquele "serrilhado" que fica na imagem????

 

:rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nandotrin acho que para isto só se encontrar algum componente que edite a imagem e mantenha a qualidade dela, fazendo este redimensinamento do tamanho da imagem pelo .net acho que não terá como tirar. Teria que procurar algum componente no asp, o pessoal utiliza o AspJpeg por exemplo, mas nunca testei nenhum para .net, de uma pesquisada.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu achei este código e pensei em implementar, porém a imagem está sendo exibida na tala ao invés de salvar no hd. O que está errado no código? O que preciso alterar? Agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.