Usuário com melhor resposta
É Possivel pegar uma imagem gravada no banco e gerar um arquivo da mesma???

Pergunta
-
Boa tarde amigos, o meu sistema salva as imagens no banco, o banco é Firebird e o campo da tabela é tipo Blob, gostaria de saber se tem como eu criar um arquivo em disco da imagem que esta no banco... alguem já fez ou viu alguma coisa parecida??
[]'s
Respostas
-
guilherme,
Um exemplo em C#
http://www.codeproject.com/KB/web-image/PicManager.aspx
Um exemplo em VB.NET
Code Snippet'referências do banco de dados
Imports
System.Data.SqlClientImports
System.Data'referência ConnectionStrings web.config
Imports
System.Web.Configuration.WebConfigurationManager'referência imagem
Imports
System.IOImports
System.IO.PathImports
System.DrawingPrivate Sub ImprimirImagem()
Dim strConexao As String = ConnectionStrings("AWorks").ConnectionString()
Dim oConn As New SqlConnection
Dim strSQL As New StringBuilder
Dim oDataSet As New dsProductPhoto
Try
'2 passo: passar os dados para o relatório (datatable) 'abrindo conexão com o banco de dadosoConn.ConnectionString = strConexao
oConn.Open()
'carregando os dados
strSQL.Append(
" SELECT ")strSQL.Append(
" ProductPhotoID, ")strSQL.Append(
" LargePhoto, ")strSQL.Append(
" LargePhotoFileName ")strSQL.Append(
" FROM ")strSQL.Append(
" Production.ProductPhoto") Dim oDA As New SqlDataAdapter(strSQL.ToString, oConn)oDA.Fill(oDataSet,
"ProductPhoto")'
'carregando uma imagem do banco de dados ' ' Dim strImgTmp As String = String.Concat(Server.MapPath("~\tmp"), "\AWoksTmpImg") 'arquivo temporário da imagem'lendo a imagem do datatable
Dim imgArray() As Byte = CType(oDataSet.Tables("ProductPhoto").Rows(0).Item("LargePhoto"), Byte()) Dim ArraySize As Integer = imgArray.GetUpperBound(0)'gravando a imagem no disco
Dim fsSave As New FileStream(strImgTmp, FileMode.OpenOrCreate, FileAccess.Write)fsSave.Write(imgArray, 0, ArraySize + 1)
'liberando o objeto
fsSave.Close()
fsSave.Dispose()
fsSave =
NothingimgArray =
Nothing'convertendo a imagem para o formato BMP
Dim objBmp As New Bitmap(strImgTmp)objBmp.Save(
String.Concat(strImgTmp, ".bmp"), Imaging.ImageFormat.Bmp)'liberando o objeto
objBmp.Dispose()
objBmp =
Nothing'removendo os arquivos temporários
'File.Delete(strImgTmp) 'File.Delete(String.Concat(strImgTmp, ".bmp"))Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
Finally
'fechando a conexão com o banco de dadosoConn.Close()
'liberando os objetosoConn.Dispose()
oDataSet.Dispose()
oConn =
NothingoDataSet =
Nothing End Try End Sub
Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
Todas as Respostas
-
guilherme,
Um exemplo em C#
http://www.codeproject.com/KB/web-image/PicManager.aspx
Um exemplo em VB.NET
Code Snippet'referências do banco de dados
Imports
System.Data.SqlClientImports
System.Data'referência ConnectionStrings web.config
Imports
System.Web.Configuration.WebConfigurationManager'referência imagem
Imports
System.IOImports
System.IO.PathImports
System.DrawingPrivate Sub ImprimirImagem()
Dim strConexao As String = ConnectionStrings("AWorks").ConnectionString()
Dim oConn As New SqlConnection
Dim strSQL As New StringBuilder
Dim oDataSet As New dsProductPhoto
Try
'2 passo: passar os dados para o relatório (datatable) 'abrindo conexão com o banco de dadosoConn.ConnectionString = strConexao
oConn.Open()
'carregando os dados
strSQL.Append(
" SELECT ")strSQL.Append(
" ProductPhotoID, ")strSQL.Append(
" LargePhoto, ")strSQL.Append(
" LargePhotoFileName ")strSQL.Append(
" FROM ")strSQL.Append(
" Production.ProductPhoto") Dim oDA As New SqlDataAdapter(strSQL.ToString, oConn)oDA.Fill(oDataSet,
"ProductPhoto")'
'carregando uma imagem do banco de dados ' ' Dim strImgTmp As String = String.Concat(Server.MapPath("~\tmp"), "\AWoksTmpImg") 'arquivo temporário da imagem'lendo a imagem do datatable
Dim imgArray() As Byte = CType(oDataSet.Tables("ProductPhoto").Rows(0).Item("LargePhoto"), Byte()) Dim ArraySize As Integer = imgArray.GetUpperBound(0)'gravando a imagem no disco
Dim fsSave As New FileStream(strImgTmp, FileMode.OpenOrCreate, FileAccess.Write)fsSave.Write(imgArray, 0, ArraySize + 1)
'liberando o objeto
fsSave.Close()
fsSave.Dispose()
fsSave =
NothingimgArray =
Nothing'convertendo a imagem para o formato BMP
Dim objBmp As New Bitmap(strImgTmp)objBmp.Save(
String.Concat(strImgTmp, ".bmp"), Imaging.ImageFormat.Bmp)'liberando o objeto
objBmp.Dispose()
objBmp =
Nothing'removendo os arquivos temporários
'File.Delete(strImgTmp) 'File.Delete(String.Concat(strImgTmp, ".bmp"))Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
Finally
'fechando a conexão com o banco de dadosoConn.Close()
'liberando os objetosoConn.Dispose()
oDataSet.Dispose()
oConn =
NothingoDataSet =
Nothing End Try End Sub
Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -