Ler foto do banco de dados
Boa Tarde Pessoal!
Observei alguns posts e não entendi mto bem...
Eu tenho algumas fotos no banco de dados SQL SERVER 2005 como bynario...Gostaria de ler e mostrar e uma picture box em um cadastro de clientes...
Vlww Pessoal
Alan Miranda
Curtidas 0
Respostas
Alan Miranda
16/09/2011
Pessoa alguem poderia me ajudar ?
GOSTEI 0
Rodrigo Odasaki
16/09/2011
Já tem um tópico neste fórum abordando este assunto. Tenta achar please. é mais ou menos de 3 a 4 meses.
GOSTEI 0
Alan Miranda
16/09/2011
Então eu vi este post, mas estou tentando fazer de outro jeito e ver se da certo...
Eu já tenho as fotos com binarios e gostaria de mostrar alguns campos e uma foto em uma picturebox.
Poderia me ajudar!
Eu já tenho as fotos com binarios e gostaria de mostrar alguns campos e uma foto em uma picturebox.
Camada DAL public SqlDataReader MostraUsuario(ClientesInformation cliente) { SqlConnection cn = new SqlConnection(); { cn.ConnectionString = Dados.StringDeConexao; SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; cmd.CommandType = CommandType.Text; cmd.CommandText = "Select * from CLIENTES where CODIGO = @CODIGO"; cmd.Parameters.AddWithValue("@CODIGO", cliente.Codigo); cn.Open(); SqlDataReader Leitor; Leitor = cmd.ExecuteReader(); if (Leitor.Read()) { cliente.Nome = Leitor["NOME"].ToString(); cliente.Email = Leitor["EMAIL"].ToString(); cliente.Telefone = Leitor["TELEFONE"].ToString(); cliente.Photo = (byte[])(Leitor["PHOTO"]); } return Leitor; } } Camada UI, Nessa camada não sei se tenho que converter os bytes para jogar no picture box... ClientesInformation Cliente = new ClientesInformation(); Cliente.Codigo = Convert.ToInt32(TxtCodigo.Text); Cliente.Nome = TxtUsuario.Text; Cliente.Email = TxtEmail.Text; Cliente.Telefone = TxtTelefone.Text; Cliente.Photo = (Byte[])Image1.DataBind; CadastroUsuarioFotu dados = new CadastroUsuarioFotu(); dados.MostraUsuario(Cliente);
Poderia me ajudar!
GOSTEI 0
Alan Miranda
16/09/2011
Alguem poderia me ajudar ?
GOSTEI 0
Alan Miranda
16/09/2011
????
GOSTEI 0
Paulo Freire
16/09/2011
Tranforme seu Streaming
http://stackoverflow.com/questions/1668469/system-drawing-image-to-stream-c
http://stackoverflow.com/questions/1346519/streaming-byte-to-image-in-asp-net-c
http://support.microsoft.com/kb/317701
http://www.codeproject.com/KB/IP/ykw1.aspx
http://www.codeproject.com/KB/cs/PictureBoxImage.aspx
http://stackoverflow.com/questions/1668469/system-drawing-image-to-stream-c
http://stackoverflow.com/questions/1346519/streaming-byte-to-image-in-asp-net-c
http://support.microsoft.com/kb/317701
http://www.codeproject.com/KB/IP/ykw1.aspx
http://www.codeproject.com/KB/cs/PictureBoxImage.aspx
GOSTEI 0
Alan Miranda
16/09/2011
Paulo estou com um dificuldade enorme de converte-la para imagem novamente... :( :(
No meu caso estou em uma aplicação asp.net então o objeto é só image e não picturebox...
por isso estou com muitas dúvidas...a maioria dos exemplos é WINDOWS
Me ajudem ai pessoal, o código fonte já esta no tópico!
Desculpe me o transtorno!!
No meu caso estou em uma aplicação asp.net então o objeto é só image e não picturebox...
por isso estou com muitas dúvidas...a maioria dos exemplos é WINDOWS
Me ajudem ai pessoal, o código fonte já esta no tópico!
Desculpe me o transtorno!!
GOSTEI 0
Rodrigo Odasaki
16/09/2011
Amigo, posta sua dúvida também em http://social.msdn.microsoft.com/Forums
É o fórum oficial da Microsoft.
Na categoria você coloca .Net Development Geral
É o fórum oficial da Microsoft.
Na categoria você coloca .Net Development Geral
GOSTEI 0
Paulo Freire
16/09/2011
Vamos lá Alan, aqui também é um forum, nesse caso recomendo vc trabalhar com Handler.ashx, muito simples, ou vc cria uma pagina qualquer transformando binario para imagem.
1º - Cria uma pagina tipo ShowImage.aspx
2º - No code bihend
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
namespace CMSO_Militar
{
public partial class ShowImage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string conStr = ConfigurationManager.ConnectionStrings["Conexao_2045"].ConnectionString;
string ID = Request.QueryString["ID"];
if (!string.IsNullOrEmpty(ID))
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand("SELECT FOTO, TIPO_FOTO FROM TBL_OFICIAIS WHERE ID = @id", con))
{
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(ID));
SqlDataReader dr;
con.Open();
dr = cmd.ExecuteReader();
if (dr.Read())
{
byte[] imgByte = (byte[])dr["FOTO"];
Response.ContentType = dr["TIPO_FOTO"].ToString();
Response.BinaryWrite(imgByte);
}
}
}
}
}
}
}
no browse coloque assim: localhost/ShowImage.aspx?ID=1 --- para o código 1
1º - Cria uma pagina tipo ShowImage.aspx
2º - No code bihend
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
namespace CMSO_Militar
{
public partial class ShowImage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string conStr = ConfigurationManager.ConnectionStrings["Conexao_2045"].ConnectionString;
string ID = Request.QueryString["ID"];
if (!string.IsNullOrEmpty(ID))
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand("SELECT FOTO, TIPO_FOTO FROM TBL_OFICIAIS WHERE ID = @id", con))
{
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(ID));
SqlDataReader dr;
con.Open();
dr = cmd.ExecuteReader();
if (dr.Read())
{
byte[] imgByte = (byte[])dr["FOTO"];
Response.ContentType = dr["TIPO_FOTO"].ToString();
Response.BinaryWrite(imgByte);
}
}
}
}
}
}
}
no browse coloque assim: localhost/ShowImage.aspx?ID=1 --- para o código 1
GOSTEI 0
Paulo Freire
16/09/2011
Para usar um Handler é mais fácil ainda...
1º - Dê um Add Item no seu projeto, escolha Web, Generic Handler, e de um nome qualquer tipo Handler.ashx
2º - Digite isso no code bihend
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.IO;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context)
{
string conStr = ConfigurationManager.ConnectionStrings["Conexao_CMSO_1248777"].ConnectionString;
string ID = context.Request.QueryString["ID"];
if (!string.IsNullOrEmpty(ID))
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand("SELECT FOTO, TIPO_FOTO FROM TBL_OFICIAIS WHERE ID = @id", con))
{
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(ID));
SqlDataReader dr;
con.Open();
dr = cmd.ExecuteReader();
if (dr.Read())
{
byte[] imgByte = (byte[])dr["FOTO"];
context.Response.ContentType = dr["TIPO_FOTO"].ToString();
context.Response.BinaryWrite(imgByte);
}
}
}
}
}
public bool IsReusable {
get {
return false;
}
}
}
Para monstra no objeto Image da sua pagina ASP.Net:
this.Image1.ImageUrl = ("http://www.cmse.eb.mil.br/cmsp/456/Handler.ashx?id=" + GridViewOficiaisAtiva.DataKeys[Convert.ToInt32(e.CommandArgument)].Values["ID"].ToString());
ou
this.Image1.ImageUrl = ("http://www.cmse.eb.mil.br/cmsp/456/Handler.ashx?id=" + Datareader["ID"].ToString;
qualquer coisa griata ai,
Paulo Freire
1º - Dê um Add Item no seu projeto, escolha Web, Generic Handler, e de um nome qualquer tipo Handler.ashx
2º - Digite isso no code bihend
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.IO;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context)
{
string conStr = ConfigurationManager.ConnectionStrings["Conexao_CMSO_1248777"].ConnectionString;
string ID = context.Request.QueryString["ID"];
if (!string.IsNullOrEmpty(ID))
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand("SELECT FOTO, TIPO_FOTO FROM TBL_OFICIAIS WHERE ID = @id", con))
{
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(ID));
SqlDataReader dr;
con.Open();
dr = cmd.ExecuteReader();
if (dr.Read())
{
byte[] imgByte = (byte[])dr["FOTO"];
context.Response.ContentType = dr["TIPO_FOTO"].ToString();
context.Response.BinaryWrite(imgByte);
}
}
}
}
}
public bool IsReusable {
get {
return false;
}
}
}
Para monstra no objeto Image da sua pagina ASP.Net:
this.Image1.ImageUrl = ("http://www.cmse.eb.mil.br/cmsp/456/Handler.ashx?id=" + GridViewOficiaisAtiva.DataKeys[Convert.ToInt32(e.CommandArgument)].Values["ID"].ToString());
ou
this.Image1.ImageUrl = ("http://www.cmse.eb.mil.br/cmsp/456/Handler.ashx?id=" + Datareader["ID"].ToString;
qualquer coisa griata ai,
Paulo Freire
GOSTEI 0
Alan Miranda
16/09/2011
Boa Tarde!
Então paulo na hora de ele fazer fazer o sql no banco, eu acho que está certo...
O problema é que eu preciso na camada de UI, converter essa foto e mostrar no objeto image....
Pessoal muito obrigado pela compreensão!
Então paulo na hora de ele fazer fazer o sql no banco, eu acho que está certo...
O problema é que eu preciso na camada de UI, converter essa foto e mostrar no objeto image....
ClientesInformation Cliente = new ClientesInformation(); Cliente.Codigo = Convert.ToInt32(TxtCodigo.Text); Cliente.Nome = TxtUsuario.Text; Cliente.Email = TxtEmail.Text; Cliente.Telefone = TxtTelefone.Text; Cliente.Photo = (Byte[])Image1.DataBind; //Nessa hora que eu não sei como converter e jogar no objeto.... CadastroUsuarioFotu dados = new CadastroUsuarioFotu(); dados.MostraUsuario(Cliente); //Aqui mostra as informações no seus especificos objetos, depois que o DataReader leu as informações no banco... //Cliente = TxtCliente Email = TxtEmail Telefone = Txttelefone image1 = image1 TxtUsuario.Text = Cliente.Nome; TxtEmail.Text = Cliente.Email; TxtTelefone.Text = Cliente.Telefone; image = //aqui tebho que passar a foto convertida para o usuário veja a foto...
Pessoal muito obrigado pela compreensão!
GOSTEI 0
Paulo Freire
16/09/2011
Então:
Image.ImageUrl = ("http://www.seusite.com.br/Handler.ashx?id=" + Cliente.Codigo;
Image.ImageUrl = ("http://www.seusite.com.br/Handler.ashx?id=" + Cliente.Codigo;
GOSTEI 0
Alan Miranda
16/09/2011
Hummm vou tentar fazer assim...
Só mais um pergunta, ali mesmo onde eu trato as variaveis na UI tem como converter com File Stream ou MemoryStrem ?
Obrigado Paulo!
Só mais um pergunta, ali mesmo onde eu trato as variaveis na UI tem como converter com File Stream ou MemoryStrem ?
Obrigado Paulo!
GOSTEI 0
Paulo Freire
16/09/2011
Seu Handler.ashx faz isso em:
byte[] imgByte = (byte[])dr["FOTO"];
context.Response.BinaryWrite(imgByte);
byte[] imgByte = (byte[])dr["FOTO"];
context.Response.BinaryWrite(imgByte);
GOSTEI 0
Alan Miranda
16/09/2011
Bom dia...
Consegui fazer agora, mas tenho um pergunta...Na vdd nós fazemos dois selects no banco certo ? Se tiver muita foto no banco não vai dar problema de perfomance ?
Por isso que estava querendo converter a foto aqui nessa camada UI, é possivel ou somente criando um Handler ?
Muito obrigado Mesmo!
Consegui fazer agora, mas tenho um pergunta...Na vdd nós fazemos dois selects no banco certo ? Se tiver muita foto no banco não vai dar problema de perfomance ?
Por isso que estava querendo converter a foto aqui nessa camada UI, é possivel ou somente criando um Handler ?
ClientesInformation Cliente = new ClientesInformation(); Cliente.Codigo = Convert.ToInt32(TxtCodigo.Text); CadastroUsuarioFotu dados = new CadastroUsuarioFotu(); dados.MostraUsuario(Cliente); TxtUsuario.Text = Cliente.Nome; TxtEmail.Text = Cliente.Email; TxtTelefone.Text = Cliente.Telefone; Image1.imageUrl = URL;
Muito obrigado Mesmo!
GOSTEI 0
Rodrigo Odasaki
16/09/2011
A minha sugestão é sempre salvar em disco e colocar somente o nome da imagem no banco.
GOSTEI 0