none
Upload de fotos alterando o tamanho do arquivo.. RRS feed

  • Pergunta

  • <object height="0" id="0a2b5a8b-1a6b-a1af-fbc9-f8ac6a98b5bf" type="application/gas-events-cef" width="0"></object>Amigos, gostaria de saber se é possível alterar o tamanho de uma foto ao fazer o upload pelo FileUpload do VS. Tipo se a foto for muito grande, irá, automaticamente, ter seu tamanho alterada... Com fazer??
    quarta-feira, 17 de julho de 2013 01:32

Respostas

  • Pega ai cara.

            /// <summary>
            /// Método para redimencionar imagens
            /// </summary>
            /// <param name="caminhoImg">Caminho da imagem a ser redimencionada</param>
            /// <param name="savePathThumb">Caminho para onde a imagem já redimencionada será salva.</param>
            /// <param name="pWidth">Define largura da thumb (x)</param>
            /// <param name="pHeight">Define altura da thumb (y)</param>
            /// <param name="redimYX">Informa se vai redimencionar x e y</param>
            public static void RedimencionarImagem(string caminhoImg, string savePathThumb, int? pWidth, int? pHeight, bool? redimYX)
            {
                System.Drawing.Image ImagemOriginal;
    
                try
                {
                    ImagemOriginal = System.Drawing.Image.FromFile(caminhoImg);
    
                    Bitmap ImagemThumb = new Bitmap(pWidth == null ? Convert.ToInt32(PadraoThumb.largura) : pWidth.Value, pHeight == null ? Convert.ToInt32(PadraoThumb.altura) : pHeight.Value);
    
                    //  Criao do objeto
                    Graphics GraficoThumb = Graphics.FromImage(ImagemThumb);
    
                    
                    //Transformar Fundo de GIFs transparente em Branco 
                    object sbThumb = new SolidBrush(System.Drawing.Color.White);
    
                    GraficoThumb.FillRectangle((Brush)sbThumb, 0, 0, ImagemThumb.Width, ImagemThumb.Height);
    
                    // Recriar a imagem com Height e Width denfinido
                    GraficoThumb.DrawImage(ImagemOriginal, 0, 0, ImagemThumb.Width, ImagemThumb.Height);
                    try
                    {
                        //Size TAMANHO = new Size(Convert.ToInt32((ImagemOriginal.Size.Width.ToString())), Convert.ToInt32((ImagemOriginal.Size.Height.ToString())));
                        //ImagemOriginal.Size.cRE = TAMANHO;
                        ImagemThumb.Save(savePathThumb, ImagemOriginal.RawFormat); //arquivo thumb
                    }
                    catch
                    {
                        throw;
                    }
                    //  Liberando memória
                    if (ImagemThumb != null)
                    {
                        ImagemThumb.Dispose();
                        ImagemThumb = null;
                    }
                }
                catch
                {
                    throw;
                }
                if (!(ImagemOriginal == null))
                {
                    ImagemOriginal.Dispose();
                    ImagemOriginal = null;
                }
    
            }

    Abraço!

    quinta-feira, 18 de julho de 2013 17:39

Todas as Respostas

  • Olá Marcus, veja se te ajuda

    Bitmap foto = (Bitmap)Image.FromStream(new MemoryStream(bytesImagem));
    
                int width = 640;
                int height = (int)(width * foto.Height) / foto.Width;
    
                Bitmap fotoSmall = new Bitmap(width, height);
                Graphics gr = Graphics.FromImage(fotoSmall);
                gr.DrawImage(foto, new Rectangle(0, 0, fotoSmall.Width, fotoSmall.Height), 0, 0, foto.Width, foto.Height, GraphicsUnit.Pixel);
                gr.Dispose();
    
                fotoSmall.Save("NomeDoArquivo");

    Nesse caso defini que a largura sera 640 pixels e a altura será proporcional a imagem original mas pode colocar o valor que quiser.

    Abraço.

    quinta-feira, 18 de julho de 2013 15:59
  • Tem várias maneiras

    http://stackoverflow.com/questions/1922040/resize-an-image-c-sharp

    Aqui sem perder qualidade

    Bitmap newImage = new Bitmap(newWidth, newHeight);
    using (Graphics gr = Graphics.FromImage(newImage))
    {
        gr.SmoothingMode = SmoothingMode.HighQuality;
        gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
        gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
        gr.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));
    }


    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    quinta-feira, 18 de julho de 2013 17:32
    Moderador
  • Pega ai cara.

            /// <summary>
            /// Método para redimencionar imagens
            /// </summary>
            /// <param name="caminhoImg">Caminho da imagem a ser redimencionada</param>
            /// <param name="savePathThumb">Caminho para onde a imagem já redimencionada será salva.</param>
            /// <param name="pWidth">Define largura da thumb (x)</param>
            /// <param name="pHeight">Define altura da thumb (y)</param>
            /// <param name="redimYX">Informa se vai redimencionar x e y</param>
            public static void RedimencionarImagem(string caminhoImg, string savePathThumb, int? pWidth, int? pHeight, bool? redimYX)
            {
                System.Drawing.Image ImagemOriginal;
    
                try
                {
                    ImagemOriginal = System.Drawing.Image.FromFile(caminhoImg);
    
                    Bitmap ImagemThumb = new Bitmap(pWidth == null ? Convert.ToInt32(PadraoThumb.largura) : pWidth.Value, pHeight == null ? Convert.ToInt32(PadraoThumb.altura) : pHeight.Value);
    
                    //  Criao do objeto
                    Graphics GraficoThumb = Graphics.FromImage(ImagemThumb);
    
                    
                    //Transformar Fundo de GIFs transparente em Branco 
                    object sbThumb = new SolidBrush(System.Drawing.Color.White);
    
                    GraficoThumb.FillRectangle((Brush)sbThumb, 0, 0, ImagemThumb.Width, ImagemThumb.Height);
    
                    // Recriar a imagem com Height e Width denfinido
                    GraficoThumb.DrawImage(ImagemOriginal, 0, 0, ImagemThumb.Width, ImagemThumb.Height);
                    try
                    {
                        //Size TAMANHO = new Size(Convert.ToInt32((ImagemOriginal.Size.Width.ToString())), Convert.ToInt32((ImagemOriginal.Size.Height.ToString())));
                        //ImagemOriginal.Size.cRE = TAMANHO;
                        ImagemThumb.Save(savePathThumb, ImagemOriginal.RawFormat); //arquivo thumb
                    }
                    catch
                    {
                        throw;
                    }
                    //  Liberando memória
                    if (ImagemThumb != null)
                    {
                        ImagemThumb.Dispose();
                        ImagemThumb = null;
                    }
                }
                catch
                {
                    throw;
                }
                if (!(ImagemOriginal == null))
                {
                    ImagemOriginal.Dispose();
                    ImagemOriginal = null;
                }
    
            }

    Abraço!

    quinta-feira, 18 de julho de 2013 17:39