Classe criada baseada no código:
http://rufan-redi.blogspot.com/2005/09/upl...ith-aspnet.html

Blog
Name:Rufan-Redi
Location:Gold Coast, Queensland, Australia

Editado, correção da mudança de qualidade da imagem. Comentei as linhas que estavam fazendo com que a imagem perdesse qualidade.

Classe VB.Net
CODE

Imports Microsoft.VisualBasic
Imports System.Drawing
Imports System.Drawing.Image

Public Class clsUpload
    Shared StatusUP As Boolean ' Status do upload

    Public Function Salvar(ByVal pImagem As HttpPostedFile, ByVal pDiretorio As String, ByVal pWidth As Integer, ByVal pHeight As Integer, ByVal pTamanho As Integer, Optional ByVal pOriginal As Boolean = False) As String
        Dim ImgOriginal As String = "original_" ' Prefixo para salvar a foto original
        Dim ImgNova As String = "prefixo_" ' Prefixo para salvar a foto redimensionada
        Dim Img ' Variavel temporaria que calcula o novo tamanho
        Dim Width, Height As Integer
        Dim Extensao As String
        Dim ImagemOriginal As Bitmap
        Dim ImagemFinal As Image
        Dim FormatoFinal As Imaging.ImageFormat = Imaging.ImageFormat.Jpeg

        If pImagem.ContentLength > pTamanho * 1024 Then
            Return "1|Sua imagem  maior que o permitido."

        Else
            Try
                ImagemOriginal = System.Drawing.Image.FromStream(pImagem.InputStream)
                ' Calculo para manter imagem em proporo
                If (ImagemOriginal.Width / pWidth) > (ImagemOriginal.Width / pHeight) Then
                    Img = ImagemOriginal.Width
                    Width = pWidth
                    Height = ImagemOriginal.Height * (pWidth / Img)
                    If Height > pHeight Then
                        Width = Width * (pHeight / Height)
                        Height = pHeight
                    End If
                Else
                    Img = ImagemOriginal.Height
                    Height = pHeight
                    Width = ImagemOriginal.Width * (pHeight / Img)
                    If Width > pWidth Then
                        Height = Height * (pWidth / Width)
                        Width = pWidth
                    End If
                End If

                ' Objeto ImagemFinal recebe ImagemOriginal
                ImagemFinal = New Bitmap(ImagemOriginal)
                'Redimensiona o tamanho da imagem
                ImagemFinal = ImagemFinal.GetThumbnailImage(Width, Height, Nothing, System.IntPtr.Zero)
                ' Criao do objeto
                'Dim Grafico As Graphics = Graphics.FromImage(ImagemFinal)
                ' Transformar Fundo de GIFs transparente em Branco
                'Dim sb = New SolidBrush(System.Drawing.Color.White)
                'Grafico.FillRectangle(sb, 0, 0, ImagemFinal.Width, ImagemFinal.Height)
                'Recriar a imagem com Height e Width denfinido
                'Grafico.DrawImage(ImagemOriginal, 0, 0, ImagemFinal.Width, ImagemFinal.Height)

                Try
                    Extensao = System.IO.Path.GetExtension(pImagem.FileName).ToLower()
                    'Definindo nomes para as imagens
                    Dim NomeOriginal As String = ImgOriginal & Date.Today.Day & Date.Today.Month & Date.Today.Year & Now.Hour & "-" & Now.Minute & "-" & Now.Second & "-" & Now.Millisecond & Extensao
                    Dim NomeRedimensionada As String = ImgNova & Date.Today.Day & Date.Today.Month & Date.Today.Year & Now.Hour & "-" & Now.Minute & "-" & Now.Second & "-" & Now.Millisecond & Extensao

                    ' Salvando Imagem Original
                    If pOriginal = True Then ImagemOriginal.Save(pDiretorio & NomeOriginal, FormatoFinal)
                    ' Salvando Imagem Redimensionada
                    ImagemFinal.Save(pDiretorio & NomeRedimensionada, FormatoFinal)

                    'Retornar Mensagem e Nomes dos arquivos
                    Return "0|Arquivo salvo!|" & NomeOriginal & "|" & NomeRedimensionada

                Catch ex As Exception
                    Return "2|" & ex.ToString

                End Try
                ' Liberando memria
                If Not ImagemFinal Is Nothing Then
                    ImagemFinal.Dispose()
                    ImagemFinal = Nothing
                End If
            Catch
                Return "1|Erro no processamento da imagem."
            End Try
        End If
        ' Liberando Memria
        If Not ImagemOriginal Is Nothing Then
            ImagemOriginal.Dispose()
            ImagemOriginal = Nothing
        End If
    End Function

End Class


Classe C#.Net
CODE

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;

/// <summary>
/// Summary description for clsUpload
/// </summary>
public class clsUpload
{
    public clsUpload()
    {
        //
        // TODO: Add constructor logic here
        //


    }

    public string Salvar(HttpPostedFile pImagem, string pDiretorio, int pWidth, int pHeight, int pTamanho)
    {
        string ImgOriginal = "original_";
        string ImgNova = "prefixo_";
        object Img;
        //  Variavel temporaria que calcula o novo tamanho
        int Width;
        int Height;
        string Extensao;
        System.Drawing.Image ImagemOriginal;
        Randomize();
        StatusUP = false;
        pImagem = pImagem;
        //  Recupera a imagem do parametro
        if ((pImagem.ContentLength
                    > (pTamanho * 1024)))
        {
            return "1|Sua imagem  maior que o permitido.";
        }
        else
        {
            try
            {
                ImagemOriginal = System.Drawing.Image.FromStream(pImagem.InputStream);
                //  Calculo para manter imagem em proporo
                if (((ImagemOriginal.Width / pWidth)
                            > (ImagemOriginal.Width / pHeight)))
                {
                    Img = ImagemOriginal.Width;
                    Width = pWidth;
                    Height = (ImagemOriginal.Height
                                * (pWidth / Img));
                    if ((Height > pHeight))
                    {
                        Width = (Width
                                    * (pHeight / Height));
                        Height = pHeight;
                    }
                }
                else
                {
                    Img = ImagemOriginal.Height;
                    Height = pHeight;
                    Width = (ImagemOriginal.Width
                                * (pHeight / Img));
                    if ((Width > pWidth))
                    {
                        Height = (Height
                                    * (pWidth / Width));
                        Width = pWidth;
                    }
                }
                Bitmap ImagemFinal = new Bitmap(Width, Height);
                //  Criao do objeto
                Graphics Grafico = Graphics.FromImage(ImagemFinal);
                //  Transformar Fundo de GIFs transparente em Branco
                object sb = new SolidBrush(System.Drawing.Color.White);
                Grafico.FillRectangle(sb, 0, 0, ImagemFinal.Width, ImagemFinal.Height);
                // Recriar a imagem com Height e Width denfinido
                Grafico.DrawImage(ImagemOriginal, 0, 0, ImagemFinal.Width, ImagemFinal.Height);
                try
                {
                    Extensao = System.IO.Path.GetExtension(pImagem.FileName).ToLower();
                    // Definindo nomes para as imagens
                    string NomeOriginal;
                    (Today.Year
                                + (Now.Hour
                                + (Now.Minute
                                + (Now.Second + Extensao))));
                    string NomeRedimensionada;
                    (Today.Year
                                + (Now.Hour
                                + (Now.Minute
                                + (Now.Second + Extensao))));
                    //  Salvando Imagem Original
                    ImagemOriginal.Save((pDiretorio + NomeOriginal), ImagemOriginal.RawFormat);
                    //  Salvando Imagem Redimensionada
                    ImagemFinal.Save((pDiretorio + NomeRedimensionada), ImagemOriginal.RawFormat);
                    StatusUP = true;
                    return ("0|Arquivo salvo!|"
                                + (NomeOriginal + ("|" + NomeRedimensionada)));
                }
                catch (Exception ex)
                {
                    return ("1|" + ex.ToString);
                }
                //  Liberando memria
                if (!(ImagemFinal == null))
                {
                    ImagemFinal.Dispose();
                    ImagemFinal = null;
                }
            }
            catch (System.Exception Return)
            {
                "1|Erro no processamento da imagem.";
            }
        }
        //  Liberando Memria
        if (!(ImagemOriginal == null))
        {
            ImagemOriginal.Dispose();
            ImagemOriginal = null;
        }
    }


}


Como utilizar a classe:
A classe sempre retorna uma string, separada pelo caracter |, desta forma podemos ver se aconteceu um erro ou sucesso. Quando acontece um erro o valor, "1|" é passado no início da string.

VB.net
CODE

Public Sub Upload(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGravar.Click

        Dim upload As New clsUpload
        Dim Mensagem As Array
        Dim Retorno As String = upload.Salvar(Request.Files(0), "D:\Inetpub\tekla\wwwroot\upload\", 80, 60, 100)
        Mensagem = Retorno.Split("|")
        If Mensagem(0) = "0" Then
            Response.Write("<script type='text/javascript'>alert('" & Mensagem(1) & "'); window.opener.document.all.ctl00_Conteudo_txtImagem.value ='" & Mensagem(3) & "';</script>")
        Else
            Response.Write("<script type='text/javascript'>alert('" & Mensagem(1) & "'); history.back();</script>")
        End If

    End Sub


C#.Net
CODE

public void Upload(object sender, System.EventArgs e) {
        clsUpload upload = new clsUpload();
        Array Mensagem;
        string Retorno = upload.Salvar(Request.Files(0), "D:\\Inetpub\\tekla\\wwwroot\\upload\\", 80, 60, 100);
        Mensagem = Retorno.Split("|");
        if ((Mensagem[0] == "0")) {
            Response.Write(("<script type=\'text/javascript\'>alert(\'"
                            + (Mensagem[1] + ("\'); window.opener.document.all.ctl00_Conteudo_txtImagem.value =\'"
                            + (Mensagem[3] + "\';</script>")))));
        }
        else {
            Response.Write(("<script type=\'text/javascript\'>alert(\'"
                            + (Mensagem[1] + "\'); history.back();</script>")));
        }
    }
[color="blue"][/color][color="#808080"][/color]



Mais um código,
Até a próxima. thumbsup.gif

Você gostou? Comente no fórum!

Mais recentes em .Net

Lendo arquivos texto
Por quintelab - Este artigo traz um assunto simples mas que quase todos...
Formatando colunas da gridview em tempo de execução
Por quintelab - Este artigo mostra como formatar uma coluna da gridview...
Carregar página de pesquisa com pop up
Por quintelab - O artigo mostra como chamar uma página de pesquisa...
Exibindo mapa usando a api do google.
Por Ivan - Usando subgurim.net...
Compactando arquivos com c#
Por Joaquim Tito - Dotnet zip library...

Ver mais Artigos de .Net.

Ver e retirar outras dúvidas no fórum Webly.

Alguns Direitos Reservados | RSS | O Fórum

Webly Portal e Fóruns - Internet + Humana | Design by ArthurHenrique.com