trabalhando com imagens

07/07/2009

Tenho uma aplicação em aspx com c# utilizando o SQL Server 2008 como banco de dados, esta aplicação tem a função de digitalizar documentos. O sistema já esta gravando no banco a imagem digitalizada em forma imagem, esses dados são gravados no SQL Server 2008, porem preciso carregar essa imagem na tela após uma consulta. Como faço para transformar  esse valor binary da imagem em imagem real ?, e também gostaria de saber como se faz para mostrar uma miniatura da imagem, e quando você clica na miniatura da imagem e carrega a imagem no formato normal.  
Ets Ltda

Ets Ltda

Curtidas 0

Respostas

Luiz Maia

Luiz Maia

07/07/2009

Ola pessoal,   Para exibir a img binario na pagina, faça o seguinte, crie uma nova pagina .aspx e no envento pageload, faça o seguinte, apenas alterando os valores e parametros pertinentes a sua aplicacao:   protected void Page_Load(object sender, EventArgs e) { try { int imagemID = Convert.ToInt32(Request.QueryString["id"]);   //nomeArquivo], [horaUpload], [MIME], [imagem] using (SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) { const string SQL = "SELECT [MIME], [imagem] FROM [Imagens] WHERE [id] = @id";
  SqlCommand myCommand = new SqlCommand(SQL, Conn); myCommand.Parameters.AddWithValue("@id", imagemID); Conn.Open();
SqlDataReader myReader = myCommand.ExecuteReader();
if (myReader.Read()) {     Response.ContentType = myReader["MIME"].ToString();     Response.BinaryWrite((byte[])myReader["imagem"]); }    myReader.Close();    Conn.Close(); } } catch (Exception ex) { Response.Write(ex.ToString()); } } Para gerar as imagens pequenas ( thumbs) vc precisara de um componente, na maioria das vezes pago. Ou vc mesmo pode fazer um, mas é uma tarefa não muito fácil, ok? Vc pode tentar usar isto:   //Define variáveis
System.Drawing.Image imagem;
System.Drawing.Image thumb;

//Recupera a imagem original
imagem = System.Drawing.Image.FromFile("CAMINHO_ARQUIVO");

//Aqui é feita a renderização proporcional da altura da imagem
//tomando por base que o largura final dela é de 50px;
int width = 50;
int height;
height = (int)(width * imagem.Height) / imagem.Width;

//Gera a nova imagem reduzida
thumb = imagem.GetThumbnailImage(width, height, null, System.IntPtr.Zero);

//Salva a imagem
thumb.Save("CAMINHO_THUMB");

OBS 1: Se vc pegar uma imagem 1024x768 e redimensionar para 50x50 ela irá ficar "deformada", pois a proporção não está adequada. Vc está transformando um retângulo em um quadrado. O código acima previne esse tipo de problema. Fica a seu critério!
  OBS 2: O CAMINHO (tanto para leitura como gravação) deve ser informado completo: Unidade + diretórios + nome do arquivo.
Exemplo: C:\Inetpub\wwwroot\MeuSite\Imagens\NomeImagem.jpg
Espero ter ajudado. Aguardo um retorno seu ok?   Abraços e sucesso no projeto. Att Luiz Maia
GOSTEI 0
Ets Ltda

Ets Ltda

07/07/2009

 Fizemos response.binarywrite, porem a função que vc me passou ela pede um caminho fisico no computador, porem lembrando que ja tenho a imagem em binario, porem no banco de dados.    a função de trazer a imagem do banco eu já tenho, preciso pegar esse array de byte e transforma no thumb nail
GOSTEI 0
Luiz Maia

Luiz Maia

07/07/2009

Faça a string binaria virar uma imagem real numa pasta temporaria, depois gere o thumb a partir dela, gere o binario deste thumb, grave na base e depois apague os arquivos temporarios.   Abraços Att Luiz Maia
GOSTEI 0
Luiz Maia

Luiz Maia

07/07/2009

Ola pessoal, como estao indo?   Aguardo Att Luiz Maia
GOSTEI 0
Ets Ltda

Ets Ltda

07/07/2009

Estamos procurando uma função salvar esse binario em imagem na pasta.
GOSTEI 0
Luiz Maia

Luiz Maia

07/07/2009

Me diga que função vcs querem, assim posso ajudar tb. Aguardo   Att Luiz Maia
GOSTEI 0
Ets Ltda

Ets Ltda

07/07/2009

quero a função que grava o Bianrio ou a imagem em uma pasta temporaria, pq eu já tenho o binario e a imagem mas não consigo salva la na pata temporario para o sistema consiga ler aquela primeira função que vc nos passou, lembro que afunção que vc passou ele gera o thumb nail apartir de uma imagem em uma pasta.
GOSTEI 0
Ets Ltda

Ets Ltda

07/07/2009

quero a função que grava o Bianrio ou a imagem em uma pasta temporaria, pq eu já tenho o binario e a imagem mas não consigo salva la na pata temporario para o sistema consiga ler aquela primeira função que vc nos passou, lembro que afunção que vc passou ele gera o thumb nail apartir de uma imagem em uma pasta.
GOSTEI 0
Luiz Maia

Luiz Maia

07/07/2009

Se vc ja tem a Imagem, e apenas quer gerar uma copia dela numa pasta temporaria, use as classes File e Directory. Vc precisara do System.IO.   Veja tutorial abaixo:   https://www.devmedia.com.br/articles/viewcomp.asp?comp=5815   Espero ter ajudado. Abraços   Att Luiz Maia    
GOSTEI 0
Devmedia

Devmedia

07/07/2009

Senhor,
a resposta do consultor conseguiu resolver suas dúvidas? Podemos encerrar o chamado?

GOSTEI 0
Luiz Maia

Luiz Maia

07/07/2009

Ola pessoal, como não obtvemos respostas quando ao seu chamado, estamos procedendo com o fechamento do mesmo.   Continuamos a sua disposição para qualquer tipo de dúvida. Caso sua dúvida persista, pode posta-lá aqui novamente.   Abraços Att Luiz Maia
GOSTEI 0
POSTAR