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!
0 comentários:
Postar um comentário