none
Carregar imagem no Picturebox, apartir do Array de Bytes. RRS feed

  • Pergunta

  • seguinte
    No meu bd tenho o hexadecimal da foto, mas ao recupera-lo não consigo montar a imagem para exibir no picturebox.
    O problema é q meu codigo levanta uma exceção do tipo outofmemory, com a mensagem "Memória insuficiente."

                SqlConnection Conexao = Form1.getConexao();
                String querySeleciona = "SELECT foto FROM Alunos WHERE id = '" + ID + "'";
                SqlCommand Commando12 = new SqlCommand(querySeleciona, Conexao);       
                             
               
                byte[] array = (byte[])Commando12.ExecuteScalar();           
                string strfn = Convert.ToString(DateTime.Now.ToFileTime());
                FileStream fs = new FileStream(strfn, FileMode.CreateNew, FileAccess.Write);
                fs.Write(array, 0, array.Length);
                fs.Flush();           
                fs.Close();
                pictureBoxFoto.Image = Image.FromFile(strfn);         // Neste ponto ocorre a exceção..

    Alguem pode dar um help ai  de porq esta levantando exceção neste ponto?
    sábado, 6 de março de 2010 17:17

Respostas

Todas as Respostas

  • A sua imagem pode ser muito grande e esta faltando memoria.
    Tente abrir a imagem deste jeito, consome menos memoria e eh emais rapido.

    System.IO.Stream stream = System.IO.File.Open("", System.IO.FileMode.Open, System.IO.FileAccess.Read);
    Image imagem = Image.FromStream(stream, false, false);

    Se sua pergunta foi respondida por favor marque a resposta como certa.
    terça-feira, 9 de março de 2010 02:21
  • A sua imagem pode ser muito grande e esta faltando memoria.
    Tente abrir a imagem deste jeito, consome menos memoria e eh emais rapido.

    System.IO.Stream stream = System.IO.File.Open("", System.IO.FileMode.Open, System.IO.FileAccess.Read);
    Image imagem = Image.FromStream(stream, false, false);

    Se sua pergunta foi respondida por favor marque a resposta como certa.
    Olá, fiz como você disse, ficou assim:
    O problema é que o método FromStream não está aceitando os parametros que passei, apesar de parecerem estar corretos. Veja o ponto comentado

                byte[] array = (byte[])Commando12.ExecuteScalar();           
                string strfn = Convert.ToString(DateTime.Now.ToFileTime());
                FileStream fs = new FileStream(strfn, FileMode.CreateNew, FileAccess.Write);
                fs.Write(array, 0, array.Length);
                fs.Flush();           
                fs.Close();
                System.IO.Stream stream = System.IO.File.Open(strfn, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                Image imagem = Image.FromStream(stream, false, false);        // Neste ponto ocorre agora uma execção do tipo argument exception.
                pictureBoxFoto.Image = imagem;

    Já tentei com todas as combinaçoes de booleano possiveis mas não funcionou. O que pode ser neste caso?
    Abraço!!
    terça-feira, 9 de março de 2010 13:26
  • Prezado,

    Alguma novidade quanto a essa sua dúvida?
    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    terça-feira, 16 de março de 2010 16:52
    Moderador
  • Quando ocorre exceções do tipo argument exception é por q a imagem pode estar corrompida.
    Tente abrir uma imagem normal apartir deste método e vai verificar que vai abrir normalmente.
    Se sua pergunta foi respondida por favor marque a resposta como certa.
    terça-feira, 16 de março de 2010 23:32
  • Quando ocorre exceções do tipo argument exception é por q a imagem pode estar corrompida.
    Tente abrir uma imagem normal apartir deste método e vai verificar que vai abrir normalmente.
    Se sua pergunta foi respondida por favor marque a resposta como certa.
    Olá,
    Mesmo assim não funciona! Já tentei todas as formas possiveis, mas nao deu.
    A exceção argumentexception continua sendo levantada. Tentei varias imagens..
    Abraço!!
    quinta-feira, 18 de março de 2010 12:33
  • Prezado,

    Alguma novidade quanto a essa sua dúvida?
    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima

    Não! O código ainda está levantando exceção ao atribuir a imagem ao picturebox, como postei no códiigo acima..
    Abraço!!
    quinta-feira, 18 de março de 2010 12:34
  • Prezado,

    Sei que já faz bastante tempo, mas, conseguiu resolver sua dúvida?


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    domingo, 13 de junho de 2010 19:11
    Moderador
  • Prezado,

    Veja se alguma coisa deste link te ajuda:

    http://stackoverflow.com/questions/676072/image-fromstream-method-returns-invalid-argument-exception


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    quinta-feira, 17 de junho de 2010 23:12
    Moderador