Fórum trabalhando com imagens #7407

07/07/2009

0

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

Responder

Posts

07/07/2009

Luiz Maia

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
Responder

Gostei + 0

10/07/2009

Ets Ltda

 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
Responder

Gostei + 0

10/07/2009

Luiz Maia

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
Responder

Gostei + 0

11/07/2009

Luiz Maia

Ola pessoal, como estao indo?   Aguardo Att Luiz Maia
Responder

Gostei + 0

13/07/2009

Ets Ltda

Estamos procurando uma função salvar esse binario em imagem na pasta.
Responder

Gostei + 0

13/07/2009

Luiz Maia

Me diga que função vcs querem, assim posso ajudar tb. Aguardo   Att Luiz Maia
Responder

Gostei + 0

15/07/2009

Ets Ltda

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.
Responder

Gostei + 0

15/07/2009

Ets Ltda

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.
Responder

Gostei + 0

15/07/2009

Luiz Maia

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    
Responder

Gostei + 0

20/07/2009

Devmedia

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

Responder

Gostei + 0

21/07/2009

Luiz Maia

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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar