none
Dimunir os pixels de uma imagem RRS feed

  • Pergunta

  • Pessoal, estou fazendo um select nas imagens do Banco, mas muitas delas estão muito grandes, para apresentar na tela está demorando muito para carregar.

    Tem como definir a quantidade de pixel para apresentação?

     while (dr.Read())
                {
                    if (dr.HasRows)
                    {
                        //ImgDef();
                        Label1.Text = "NADA";
                        Response.ContentType = "image/jpeg";
                        Response.BinaryWrite((byte[])dr["IMAGEM"]);
                    }
                 
                }


    Junior Santana

    terça-feira, 14 de fevereiro de 2012 13:50

Respostas

Todas as Respostas

  • Olá,

    Você precisa compactar a imagem antes de jogar para o banco ou somente diminuí-la para exibição?

    terça-feira, 3 de julho de 2012 01:10
  • Junior o correto seria talvez vc reduzir a qualidade para apresentar

    http://www.codeproject.com/Articles/11143/Image-Resizing-outperform-GDI


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

    • Sugerido como Resposta EduardoPiresMVP terça-feira, 3 de julho de 2012 13:41
    • Marcado como Resposta Jr_inc quarta-feira, 4 de julho de 2012 12:11
    terça-feira, 3 de julho de 2012 13:16
    Moderador
  • Olá,

    Utilizo um código para reduzir e compactar imagens via upload e salvá-las no servidor.

    Segue abaixo trecho para compactar e reduzir o tamanho da imagem:

    private static ImageCodecInfo GetEncoderInfo(String mimeType)
    {
        int j;
        ImageCodecInfo[] encoders;
        encoders = ImageCodecInfo.GetImageEncoders();
        for (j = 0; j < encoders.Length; ++j)
        {
            if (encoders[j].MimeType == mimeType)
                return encoders[j];
        }
        return null;
    }

    private void SaveJPGWithCompressionSetting(System.Drawing.Image image, MemoryStream streamDestino , long qualidadeCompressao)
    {
        EncoderParameters eps = new EncoderParameters(1);
        eps.Param[0] = new EncoderParameter(Encoder.Quality, qualidadeCompressao);
        ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
        image.Save(streamDestino, ici, eps);
    }

    //método para ser passado no parâmetro

    private bool MeuRetorno()
    {
          return false;
    }

    //Criar um método para passar os bytes da imagem que será compactada e reduzida com o código abaixo:

    MemoryStream StreamImagemEntrada = new MemoryStream((byte[])dr["IMAGEM"]);
    System.Drawing.Image ImagemOrigem = System.Drawing.Image.FromStream(StreamImagemEntrada);

    double altura = ImagemOrigem.Height;
    double largura = ImagemOrigem.Width;

    //altura ou largura máxima de 600
    while (largura > 600 && altura > 600)
    {
        largura = largura * 0.99;
        altura = altura * 0.99;
    }

    ImagemOrigem = ImagemOrigem.GetThumbnailImage(Convert.ToInt32(largura), Convert.ToInt32(altura), 
        new System.Drawing.Image.GetThumbnailImageAbort(MeuRetorno), IntPtr.Zero);

    MemoryStream StreamImagemSaida = new MemoryStream();

    SaveJPGWithCompressionSetting(ImagemOrigem, StreamImagemSaida, 80);

    Response.ContentType = "image/jpeg";
    Response.BinaryWrite(StreamImagemSaida.ToArray());

    StreamImagemEntrada.Close();
    StreamImagemEntrada.Dispose();
    StreamImagemSaida.Close();
    StreamImagemSaida.Dispose();

    quarta-feira, 4 de julho de 2012 01:04