terça-feira, 19 de fevereiro de 2002

Como exibir imagens armazenadas em campos BLOB/RAW/Long RAW

Como exibir imagens armazenadas em campos BLOB/RAW/Long RAW
Eis outra dúvida freqüente: como pegar uma imagem que foi armazenada em um campo BLOB (Binary Large Object) do SQL Server ou RAW/Long RAW do Oracle e exibí-la, usando o ASP ?
Antes de mais nada, vale a recomendação de sempre: se não é para copiarem, não coloque na Internet. O mecanismo abaixo pode ser interessante para deixar imagens "seguras", por poder ser incremnetado de forma a ser necessário um usuário/senha para poder visualizar a imagem, mas sempre vai ter um espírito de porco que vai repassar a senha dele para outros. Tenha isso em mente..
O segredo consiste em dizer ao browser que a página em questão não irá retornar um documento HTML, mas uma imagem  (em outras palavras, nao retornar um MIME Type 'text/html', mas um 'image/gif', 'image/jpeg', etc.) Observe o código abaixo, que exibe uma imagem JPEG, armazenada em um hipotético campo BLOB chamado "Imagem":


<%
'Imagem.asp


'Convém expirar o contéudo, de forma a desprezar o que houver em cache, no caso de imagens dinâmicas
Response.Expires = -1000
Response.ExpiresAbsolute = 0
Response.Buffer = true
Response.ContentType = "image/jpeg"
 
'Aqui entraria a rotina de conexão com o banco de dados


Response.BinaryWrite rs("Imagem")


'Nao esqueça de destruir os objetos criados


%>


E depois essa imagem seria exibida no HTML assim:


<img src="Imagem.asp" alt="uhu!" />


Mas vale ressaltar que, caso a necessidade seja construir suas próprias imagens, provavelmente para exibir gráficos dinâmicos, há ao menos quatro possibilidades:
1: Criar a imagem na mão, usando algum componente de terceiros (costumam ser caros)
2: Renderizar a imagem no lado do cliente, usando algum applet Java ou ActiveX (KavaChart ou Office Web Components, por exemplo)
3: Desenvolver um código que gere uma imagem SVG (o plug-in é pesado: cerca de 2.5Mb. IMHO, é a opção mais divertida)


Além disso, tem o lance do espaço necessário para armazenar essas imagens, o stress do banco de dados, enfim, a decisão final é sua. Divirta-se!



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

0 comentários: