Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de Usuários
»Células Acadêmicas«
intcontpiada : 118
Evoluindo
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
Faça um pequeno teste com 10 questões de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programação com nosso treinamento on-line de lógica de programação
.:.
Veja nosso calendário de treinamentos
Gostou da Página?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 






Recuperando imagens de bancos MDB com ASP


No último artigo vimos como exbir em páginas web imagens contidas em bancos de dados. Muitos porém devem ter se decepcionado ao descobrir que a solução proposta no artigo anterior só funciona com SQL Server e não com Access.

A questão em relação ao Access é que seu campo Objeto OLE é diferente do campo Image do SQL Server. O campo image do SQL Server grava a imagem de forma binária, bit a bit, enquanto que o campo Objeto OLE do Access guarda a imagem dentro de um objeto OLE. Assim sendo, além de guardar os bits da imagem o access envolve esses bits com um objeto OLE. Desta forma, se simplesmente pegarmos o conteúdo do campo e exibirmos em uma página web o browser não entenderá esse conteúdo como uma imagem.

Para resolver o problema precisamos, antes de exibir a imagem, retirar dela o cabeçalho OLE inserido pelo Access, cabeçalho este que tem um total de 78 bytes. Retirado o cabeçalho, teremos em mãos a imagem original, esta sim poderá ser exibida no Browser.

Vejamos um exemplo com o banco Northwind do Access. Esse banco tem um campo chamado Photo na tabela Employees. Este campo contém uma imagem BMP (Vocês não sabiam que pode-se colocar BMP na Web ? IE 5 aceita, netscape não).

Para podermos fazer a leitura byte a byte de uma imagem iremos utilizar um método chamado GetChunk, método do objeto Field que permite acessarmos um campo tipo objeto. O GetChunk possui um "ponteiro" interno que determina em que ponto da imagem ele está. Assim sendo, primeiramente fazermos a leitura dos 78 bytes iniciais. Na leitura seguinte o ponteiro já estará posicionado no byte 79 e poderemos fazer a leitura a partir dai. Vejam o resultado :

<%
response.Expires = 0
response.Buffer = TRUE
response.clear
response.contenttype = "image/bmp"

Set db = CreateObject("ADODB.Connection")
set rs=createobject("adodb.recordset")

db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ultradev\northwind.mdb;Persist Security Info=False"

rs.open "SELECT photo as imagem FROM employees where employeeid=" & request.querystring("cod") ,db

t=rs.fields("imagem").actualsize
img=rs.fields("imagem").getchunk(78)
img=rs.fields("imagem").getchunk(t -78)

response.binarywrite img


rs.close

db.Close
Set rs = nothing
Set db = nothing
%>

Para chamar essa página precisaremos de outra igual a criada no artigo anterior, que chame esta página a partir do SRC de uma tag image. Veja um exemplo :

<html>
<body>
<img src="imagemaccess.asp?cod=<%=request.querystring("cod") %>">
</body>
</html>


Mais uma vez vocês se decepcionarão se tentarem gravar gif's em arquivos MDB e executar esta página. Simplesmente não funcionará. O cabeçalho OLE inserido pelo Access para arquivos .gif é diferente do cabeçalho OLE inserido para arquivos .BMP, fazendo com que essa solução não funcione para Gif's inseridas através de forms no Access.

Mas observem que eu disse "inseridas através de forms no access". Nós temos como gravar uma gif em um campo objeto OLE sem que o access faça a inserção dos 78 bytes de cabeçalho e essa será a solução que utilizaremos no próximo artigo.

Obs : Se alguém descobrir qual cabeçalho o access insere em gif's, por favor me conte.

Próximos Artigos :

  • Gravação de imagens em bancos Access
  • Leitura/Gravação de imagens pelo VB

Dennes Torres
MCSD,MCSE,MCDBA





Envie seus comentrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentrios nesta pgina

Veja abaixo os comentários já enviados :

Nome : Richard E-Mail : richardbezerra@gmail.com
Não achei o artigo em que você trata de Imagens/SQL Server/ASP, só achei este de Access, poderia me informar sobre?
Nome : wilson santos E-Mail : wilson@g-net.com.br
Olá. Cade o artigo anterior que fala sobre o sql server.
Não encontrei em lugar nenhum do site.
Nome : Dafne E-Mail : dafzzz@uol.com.br
tb não achei o artigo anterior, gostaria muito de ler...
Nome : Hamilton Fernandes de Moraes Junior E-Mail : profhamilton@superig.com.br
Ola.
Naõ encontrei no site o artigo que fal ade imagens em banco de dados SQL server..você poderia me indicar um local ond eposso obter essa informação?
Nome : Paulo Kaercher E-Mail : pkaercher@camacari.ba.gov.br
Existe artigo em que você trata de Imagens/SQL, usando a linguagem Delphi ? Poderia me ajudar ?
Nome : Fabio José Mesquita E-Mail : fjmeskta@gmail.com
Saberia me dizer qual o tamanho do cabeçalho para fotos .jpg?

esses dados originalmente foram colocados pelo acess, mas agora eles estão no sql server 8.0 no formato image, e está sendo utilizado o php para buscar no banco, para imagens bmp, realmente, os 78 bytes funcionaram.

Já fiz todo tipo de teste, e milhares de consultas na web, nos arquivos de ajuda do sql server, da acess, do php, e até do front page para ver se encontrava algum active x que resolvesse o problema, apesar de eu não utilizar o front-page.

Mas até o momento não consegui resolser o problema de mostrar esta imagem.

Se eu gravo o conteudo binario de um arquivo .jpg dentro dessebanco e recupero ele de volta usando o select, o browser mostra a imagem sem problemas, provando assim que o problema não é nem com o sql server, nem com o php, mas sim com o formato OLE, qu efoi gravado anteriormente pelo acess.

Desculpa se escrevi demais, mas assim não ficam duvidas de como está o meu pequeno grande problema.
Nome : fábio josé mesquita E-Mail : fjmeskta@gmail.com
correção de um erro no comentario anterior, o ole está guardado é um objeto do photo editor 3.0, preciso saber qual o tamanho deste cabeçalho, pra mostrar a imagem.

agradeço aos que puderem ajudar
Nome : Liliana Ribeiro E-Mail : lili_porreira@hotmail.com
Gostaria de saber como fazer aGravação de imagens em bancos Access
Nome : kezia willemen E-Mail : keziawboni@yahoo.com.br
Só queria saber o significado de OLE
Nome : Dennes E-Mail : dennes@bufaloinfo.com.br
Oi !

Veja este link : http://en.wikipedia.org/wiki/Object_Linking_and_Embedding

[]'s

Dennes
Nome : Adeline Viana E-Mail : adelineviana@hotmail.com
Boa Noite,
Gostaria de saber como faço para encaminhar um currículo a vocês.
Obrigada.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

� Búfalo Informática, Treinamento e Consultoria - Rua Álvaro Alvim, 37 Sala 920 - Cinelândia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br