PRECISO DE AJUDA COM VARI?VEL TIPO BYTE
                    Oi pessoal,
Estou com um problema, tenho uma variável do MYSQL tipo LONGBLOB onde guardo imagens, o problema não é salvar esta imagem mais sim de apresentar esta imagem em um PICTUREBOX. Quando verifico se o campo que guardo esta imagem está vazia me retorna o seguinte erro:
NÃO é POSSÃVEL CONVERTER UM OBJETO DO TIPO [Ô]SYSTEM.DBNULL[Ô] NO TIPO SYSTEM.BYTE[]
Abaixo está parte do código onde faço a apresentação da figura ou foto que está salva no banco de dados.
If Not IsDBNull(dr_Empresa.Item([Ô]Foto[Ô])) Then
Dim byteImage() As Byte = dr_Empresa.Item([Ô]Foto[Ô])
Me.Pxb_Foto2.Image = Nothing
Dim stmFoto As New System.IO.MemoryStream(byteImage)
Pxb_Foto2.Image = Image.FromStream(stmFoto)
Else
Me.Pxb_Foto2.Image = Image.FromFile(PathFoto & [Ô]Security_Reader1.png[Ô])
End If
                        
Por favor preciso de ajuda para saber como faço para apresentar a foto ou imagem gravada no banco de dados.
PS:
No banco de dados a variável é:
Nome: Foto
tipo: LongBlob
Obrigado.
            Estou com um problema, tenho uma variável do MYSQL tipo LONGBLOB onde guardo imagens, o problema não é salvar esta imagem mais sim de apresentar esta imagem em um PICTUREBOX. Quando verifico se o campo que guardo esta imagem está vazia me retorna o seguinte erro:
NÃO é POSSÃVEL CONVERTER UM OBJETO DO TIPO [Ô]SYSTEM.DBNULL[Ô] NO TIPO SYSTEM.BYTE[]
Abaixo está parte do código onde faço a apresentação da figura ou foto que está salva no banco de dados.
If Not IsDBNull(dr_Empresa.Item([Ô]Foto[Ô])) Then
Dim byteImage() As Byte = dr_Empresa.Item([Ô]Foto[Ô])
Me.Pxb_Foto2.Image = Nothing
Dim stmFoto As New System.IO.MemoryStream(byteImage)
Pxb_Foto2.Image = Image.FromStream(stmFoto)
Else
Me.Pxb_Foto2.Image = Image.FromFile(PathFoto & [Ô]Security_Reader1.png[Ô])
End If
Por favor preciso de ajuda para saber como faço para apresentar a foto ou imagem gravada no banco de dados.
PS:
No banco de dados a variável é:
Nome: Foto
tipo: LongBlob
Obrigado.
                    ELMO01,
Achei algo interessante. Talvez sirva para você:
----------------------------------------------------------
Salvar e recuperar imagens BLOB do banco de dados MySQL em ASP.Net, C # e VB.Net
http://www.aspsnippets.com/Articles/Save-and-Retrieve-BLOB-Images-from-MySql-Database-in-ASPNet-C-and-VBNet.aspx
Exibindo as imagens binárias (BLOB) no controle de imagem no GridView
O seguinte manipulador de eventos OnRowDataBound faz o trabalho de exibir os dados de imagem binária (BLOB) no controle de imagem.
Primeiro, os dados BLOB são obtidos da propriedade GridView DataItem e são convertidos de volta para a matriz BYTE, que é então convertida em uma seqüência BASE64 e atribuÃda à propriedade ImageUrl do controle Image.
----------------------------------------------------------
[][ô]s,
Tunusat.
            Achei algo interessante. Talvez sirva para você:
----------------------------------------------------------
Salvar e recuperar imagens BLOB do banco de dados MySQL em ASP.Net, C # e VB.Net
http://www.aspsnippets.com/Articles/Save-and-Retrieve-BLOB-Images-from-MySql-Database-in-ASPNet-C-and-VBNet.aspx
Exibindo as imagens binárias (BLOB) no controle de imagem no GridView
O seguinte manipulador de eventos OnRowDataBound faz o trabalho de exibir os dados de imagem binária (BLOB) no controle de imagem.
Primeiro, os dados BLOB são obtidos da propriedade GridView DataItem e são convertidos de volta para a matriz BYTE, que é então convertida em uma seqüência BASE64 e atribuÃda à propriedade ImageUrl do controle Image.
----------------------------------------------------------
  Protected Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim bytes As Byte() = TryCast(TryCast(e.Row.DataItem, DataRowView)([Ô]Content[Ô]), Byte())
        Dim base64String As String = Convert.ToBase64String(bytes, 0, bytes.Length)
        TryCast(e.Row.FindControl([Ô]Image1[Ô]), Image).ImageUrl = Convert.ToString([Ô]data:image/png;base64,[Ô]) & base64String
    End If
End Sub [][ô]s,
Tunusat.
                    ELMO01, uso isso aqui:
e voce coloca isso no form
              #Region [Ô]Using Statements[Ô]
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.IO
Imports System.Data
Imports MySql.Data.MySqlClient
#End Region
Namespace ImgDataTable
    Partial Public Class CategoriesTableAdapter
        Private Connection As String = [Ô]sua conexao[Ô]
        [ô][ô][ô] <summary>
        [ô][ô][ô] The insertNewImage method takes all the information about the image and stores it
        [ô][ô][ô] in the database.  This method accesses a stored procedure to insert the data and returns
        [ô][ô][ô] the success statement or error message.
        [ô][ô][ô] </summary>
        [ô][ô][ô] <param name=[Ô]CategoryID[Ô]></param>
        [ô][ô][ô] <param name=[Ô]photographName[Ô]></param>
        [ô][ô][ô] <param name=[Ô]myBuffer[Ô]></param>
        [ô][ô][ô] <returns></returns>
        [ô][ô][ô] 
        Public Function insertNewImage(ByVal CategoryID As Integer, ByVal photographName As String, ByRef myBuffer() As Byte) As String
            Return [Ô][Ô]
        End Function
        Public Function insertNImage(ByVal StrSQL As String, ByRef myBuffer() As Byte) As String
            Dim message As String = [Ô][Ô]
            Dim myConnection As MySqlConnection
            myConnection = New MySqlConnection(Connection)
            Try
                myConnection.Open()
                [ô][ô] Create a stored procedure command
                Dim myCommand As New MySqlCommand
                [ô]
                myCommand = myConnection.CreateCommand
                myCommand.CommandText = StrSQL
                [ô][ô] Add the image parameter and set myBuffer as the value.
                myCommand.Parameters.Add([Ô]@image[Ô], MySqlDbType.Blob).Value = myBuffer
                [ô][ô] Execute the insert
                myCommand.ExecuteNonQuery()
                [ô][ô] Close the Connection
                myConnection.Close()
                [ô][ô] Assign the success message
                message = [Ô]foto inserida![Ô]
            Catch ex As Exception
                MsgBox(Err.Number & [Ô] - [Ô] & ex.Message)
                [ô][ô] Assign the error message
                message = Err.Number & [Ô] - [Ô] & ex.Message
            End Try
            Return message
        End Function
        [ô][ô][ô] <summary>
        [ô][ô][ô] The getCategories method is a general method that returns a DataSet with Category
        [ô][ô][ô] information in it.
        [ô][ô][ô] </summary>
        [ô][ô][ô] <returns></returns>
        Public Function getCategories(ByVal MyQuery As String) As DataSet
            Dim myConnection As MySqlConnection
            Dim myCommand As MySqlCommand
            Dim myDataSet As DataSet = New DataSet()
            Dim myAdapter As MySqlDataAdapter
            myConnection = New MySqlConnection(Connection)
            Try
                myConnection.Open()
                myCommand = New MySqlCommand()
                myCommand.CommandText = MyQuery
                myCommand.Connection = myConnection
                myAdapter = New MySqlDataAdapter(myCommand)
                myAdapter.Fill(myDataSet)
                myConnection.Close()
            Catch ex As Exception
                Throw ex
            End Try
            Return myDataSet
        End Function
        [ô][ô][ô] <summary>
        [ô][ô][ô] The getImages method accesses the database and return Image information
        [ô][ô][ô] based on the CategoryID that is passed in.
        [ô][ô][ô] </summary>
        [ô][ô][ô] param name=[Ô]CategoryID[Ô]/param
        [ô][ô][ô] <returns></returns>
        [ô][ô][ô] 
        Public Function getImages(ByVal MyQuery As String) As DataSet
            Dim myConnection As MySqlConnection
            Dim myCommand As MySqlCommand
            Dim myDataSet As DataSet = New DataSet()
            Dim myAdapter As MySqlDataAdapter
            myConnection = New MySqlConnection(Connection)
            Try
                myConnection.Open()
                myCommand = New MySqlCommand()
                myCommand.CommandText = MyQuery
                myCommand.Connection = myConnection
                myAdapter = New MySqlDataAdapter(myCommand)
                myAdapter.Fill(myDataSet)
            Catch ex As Exception
                Throw ex
            End Try
            Return myDataSet
        End Function
    End Class
End Namespace
 e voce coloca isso no form
  
    Private Sub CarregaImg()
        Try
            [ô][ô] create a new adapter object
            Dim myAdapter As CategoriesTableAdapter = New CategoriesTableAdapter()
            [ô][ô] DataSet of image information
            myPhotoDataSet = myAdapter.getImages(Str)
            If myPhotoDataSet.Tables(0).Rows.Count > 0 Then
                [ô][ô] Get the image data and stored it in a byte array
                Dim myByteArray() As Byte
                myByteArray = IIf(IsDBNull(myPhotoDataSet.Tables(0).Rows(currentPage).Item([Ô]Foton[Ô])), Nothing, myPhotoDataSet.Tables(0).Rows(currentPage).Item([Ô]Foton[Ô]))
                If Not IsNothing(myByteArray) Then
                    [ô][ô] Create a new MemoryStream and write all the information from
                    [ô][ô] the byte array into the stream
                    Dim myStream As MemoryStream = New MemoryStream(myByteArray, True)
                    myStream.Write(myByteArray, 0, myByteArray.Length)
                    [ô][ô] Use the MemoryStream to create the new BitMap object
                    Dim FinalImage As Bitmap = New Bitmap(myStream)
                    [ô][ô] See if the image stored will fit in the picture box. If it[ô]s too big, 
                    [ô][ô] resize and create a new BitMap object and assign to the PictureBox control
                    If FinalImage.Width > 120 And FinalImage.Height > 160 Then
                        [ô]Dim AlteredImage As Bitmap = New Bitmap(FinalImage, New Size(PctFoto.Width, PctFoto.Height))
                        [ô]PctFoto.Image = AlteredImage
                        PctFoto.Image = FinalImage
                    Else
                        PctFoto.Image = FinalImage
                    End If
                    [ô][ô] Close the stream
                    myStream.Close()
                Else
                    Fft = False
                End If
            Else
                MessageBox.Show([Ô]Não imagens para mostrar[Ô])
                Fft = False
            End If
        Catch ex As Exception
            [ô]MessageBox.Show([Ô]There was an error displaying this image.[Ô], [Ô]Alert[Ô])
            MsgBox(Err.Number & [Ô] - [Ô] & ex.Message)
        End Try
    End Sub 
                    Tenta fazer assim
If Not IsDBNull(dr_Empresa.Item([Ô]Foto[Ô])) Then
Dim Img As New MemoryStream(CType( dr_Empresa.Item([Ô]Foto[Ô]), Byte()))
Me.Pxb_Foto2.Image = Image.FromStream(Img)
Else
Me.Pxb_Foto2.Image = Nothing
End If
 
                
            If Not IsDBNull(dr_Empresa.Item([Ô]Foto[Ô])) Then
Dim Img As New MemoryStream(CType( dr_Empresa.Item([Ô]Foto[Ô]), Byte()))
Me.Pxb_Foto2.Image = Image.FromStream(Img)
Else
Me.Pxb_Foto2.Image = Nothing
End If
                    Pessoal, muito obrigado por ter respondido, deu certo.
                
            
                        Tópico encerrado , respostas não são mais permitidas
                    
                


