Usuário com melhor resposta
Pergunta...

Pergunta
-
Boa noite pessoal... Estou tentando transportar uma imagem do tipo byte que se encontra no Bano de dados para uma PitureBox
mas em programação 3 camadas como mostra o código abaixo em c# 2013:
txtEmail.Text = Funcionario.Email;
txtSkype.Text = Funcionario.Skepe;
ptbFoto.Image = null;
if (Funcionario.Foto != null && Funcionario.Foto.Length > 0)
{
foto_arry = Funcionario.Foto;
MemoryStream ms = new MemoryStream(foto_arry);
ptbFoto.Image = Image.FromStream(new MemoryStream(foto_arry));
}Mas na hora de executar apresenta o seguinte erro: O Parâmetro não é valido...
Apliquei um debug, O erro esta na seguinte linha:
ptbFoto.Image = Image.FromStream(new MemoryStream(foto_arry));
Agradeceria se do vosso lado alguém ajudasse... Muito obrigado
- Editado Angolano de Ouro quinta-feira, 5 de janeiro de 2017 22:03
Respostas
-
Essa mensagem indica que o campo Foto nao contem um bytearray valido. Ou seja o bytearray nao é de um dos tipos validos para a imagem:,BMP,GIF,JPEG,PNG,TIFF
fonte:http://stackoverflow.com/questions/6712557/image-fromstream-parameter-not-valid
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Robson William SilvaModerator segunda-feira, 9 de janeiro de 2017 11:03
Todas as Respostas
-
Boa noite Angolano de Ouro
É WinForm?
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
Bom dia,
Tente desta forma:
txtEmail.Text = Funcionario.Email; txtSkype.Text = Funcionario.Skepe; ptbFoto.Image = null; if (Funcionario.Foto != null && Funcionario.Foto.Length > 0) { foto_arry = Funcionario.Foto; System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter(); ptbFoto.Image = (Image)converter.ConvertFrom(foto_arry); }
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
-
1º Metodo: Que permite apresentar os dados do banco de dados nos objectos do formulário através da classe BLL
private void mCarregarCampos()
{
clsFuncionarioDTO Funcionario = new clsFuncionarioDTO();
if (this.Text == "FUNCIONÁRIOS")
{
if (cbxCodFuncionario.Text != "")
{
bll.CarregarFuncionario(Funcionario, int.Parse(cbxCodFuncionario.Text));
}
}
txtFuncionario.Text = Funcionario.Funcionario;
txtEmail.Text = Funcionario.Email;
txtSkype.Text = Funcionario.Skepe;
ptbFoto.Image = null;
if (Funcionario.Foto != null && Funcionario.Foto.Length > 0)
{
foto_arry = Funcionario.Foto;
//MemoryStream ms = new MemoryStream(foto_arry);
//ptbFoto.Image = Image.FromStream(new MemoryStream(foto_arry));
System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
ptbFoto.Image = (Image)converter.ConvertFrom(foto_arry);
}
2º Metodo: que se encontra na classe BLL que contém a intrução SQL
public void CarregarFuncionario(clsFuncionarioDTO Funcionario,int comboBox)
{
string comando = "SELECT Funcionario,Email,Skype,Foto FROM tblFuncionarios WHERE tblFuncionarios.CodFuncionario = " + comboBox + " ";
string campo = "Funcionario";
string campo1 = "Email";
string campo2 = "Skype";
string campo3 = "Foto";
SqlDataReader seleccione = mMostrarDados(comando);
while (seleccione.Read())
{
Funcionario.Funcionario = seleccione[campo].ToString();
Funcionario.Email = seleccione[campo1].ToString();
Funcionario.Skepe = seleccione[campo2]ToString();
if (seleccione[campo3] != System.DBNull.Value)
Funcionario.Foto = (byte[])seleccione[campo3];
}
seleccione.Close();
}
3º Metodo: Que comunica diretamente com o banco de dados
class clsABD
{
public SqlConnection conexao;
private SqlCommand comando;
private SqlCommandBuilder comandoB;
private SqlDataAdapter seleccione;
private SqlDataReader seleccione1;
private DataTable tabela;
private string caminho = String.Format("Data Source=Afonso;Initial Catalog=DB_EMPRESA;Integrated Security=True");
public void LigarBD()
{
if (conexao != null)
conexao.Close();
try
{
conexao = new SqlConnection(caminho);
conexao.Open();
}
catch (Exception ex)
{
throw new Exception ("Erro! Aplicação não conseguio ligar a Base de Dados!"+ex.Message);
}
}
public void DesligarBD()
{
try
{
conexao = new SqlConnection(caminho);
conexao.Close();
}
catch (Exception ex)
{
throw new Exception ("Erro ao tentar desligar a Base de Dados!"+ex.Message);
}
}
public void mExecutarComandos(string comandoSQL)
{
LigarBD();
comando = new SqlCommand(comandoSQL,conexao);
try
{
comando.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception("Erro ao executar camandoSQL!" + ex.Message);
}
finally
{
DesligarBD();
}
}
public DataTable mCriarTabela(string comandoSQL)
{
LigarBD();
tabela = new DataTable();
seleccione = new SqlDataAdapter(comandoSQL,conexao);
comandoB = new SqlCommandBuilder(seleccione);
seleccione.Fill(tabela);
DesligarBD();
return tabela;
}
public SqlDataReader mCriarTabelaLeitura(string comandoSQL)
{
LigarBD();
comando = new SqlCommand(comandoSQL, conexao);
seleccione1 = comando.ExecuteReader();
//DesligarBD();
return seleccione1;
}
}
Esta tudo em conforme carrega todos campos menos o campo Fotográria na PictureBox mais na hora de executar apresentea o seguinte erro:Boa noite Juliano Nunes... É sim winForm. Tentei como postaste ainda mesmo assim continua o mesmo erro...
Observer:
- Editado Angolano de Ouro sexta-feira, 6 de janeiro de 2017 21:37
-
Essa mensagem indica que o campo Foto nao contem um bytearray valido. Ou seja o bytearray nao é de um dos tipos validos para a imagem:,BMP,GIF,JPEG,PNG,TIFF
fonte:http://stackoverflow.com/questions/6712557/image-fromstream-parameter-not-valid
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Robson William SilvaModerator segunda-feira, 9 de janeiro de 2017 11:03
-
Bom dia,
Devido a falta de interação do autor dessa pergunta,
essa thread está sendo fechada. Caso o problema ainda
esteja ocorrendo, favor abrir uma nova thread.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
-
-
O link sugerido é somente para ver se o problema nao é o mesmo. Independente da linguagem utilizada, este problema ocorre caso o bytearray nao seja proveniente de uma imagem de um dos tipos validos: BMP,GIF,JPEG,PNG,TIFF
Voce tem certeza que o bytearray (Funcionario.Foto) que voce esta tentando converter em uma imagem é realmente uma imagem?
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
Sim tenho a certeza William... Porque antes de converter para imagem consegui inserir a imagem para o banco de dados. Mas atravéz de um bug pude observar que o bytearray Funcionario.Foto tem o valor de 13 e não sei se o número 13 é a quantidade de bytes que neste caso será muito pequena...