получить изображение в базе данных MySQL с помощью VB - PullRequest
0 голосов
/ 20 марта 2012

Я хочу получить изображение из базы данных MySQL в VB без использования идентификатора. но почему у меня ошибка "Невозможно привести объект типа 'System.Byte []" к типу "System.Drawing.Image". "

это моя кодировка. Я использую Visual Basic 2008 и базы данных MySQL. формат изображения BLOB. например, [BLOB - 22,1 КиБ]

Imports MySql.Data.MySqlClient
Imports System.Drawing.Imaging
Public Class Form_Popup

    Private Sub Form_Popup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        objconn = New MySqlConnection("server=localhost;database=new;userid=root;password= 'root'")
        objconn.Open()
        strsql = "select * from peribadi where Noid =@field1"
        command = (New MySql.Data.MySqlClient.MySqlCommand(strsql, objconn))
        With command
            .Parameters.AddWithValue("@field1", FormRegister.TextBox1.Text)
        End With

        objdr = command.ExecuteReader
        If (objdr.Read()) Then
            Label4.Text = (objdr("Name"))
            Label5.Text = (objdr("Address"))
            PictureBox1.Image = (objdr("picture"))

        End If

    End Sub

Ответы [ 3 ]

1 голос
/ 20 марта 2012

Ошибка при получении вашего изображения.Вам нужно сначала преобразовать изображение в байтовый массив.прежде чем отобразить его в графическом окне ..

 Public Function ResizeImageWithAspect(ByVal picImage As Image, ByVal newWidth As Integer) As Bitmap
    Dim original As Image = picImage
    If Not original Is Nothing Then
        //Find the aspect ratio between the height and width.
        Dim aspect As Single = CSng(original.Height) / CSng(original.Width)

        //Calculate the new height using the aspect ratio
        // and the desired new width.
        Dim newHeight As Integer = CInt((newWidth * aspect))

        //Create a bitmap of the correct size.
        Dim temp As New Bitmap(newWidth, newHeight, original.PixelFormat)

        //Get a Graphics object from the bitmap.
        Dim newImage As Graphics = Graphics.FromImage(temp)

        //Draw the image with the new width/height
        newImage.DrawImage(original, 0, 0, newWidth, newHeight)

        //Dispose of our objects.
        Return temp
        original.Dispose()
        temp.Dispose()
        newImage.Dispose()
    Else
        Return Nothing
    End If

End Function

Public Function ByteToImage(ByVal blob() As Byte) As Bitmap
    Dim mStream As New System.IO.MemoryStream
    Dim pData() As Byte = DirectCast(blob, Byte())
    mStream.Write(pData, 0, Convert.ToInt32(pData.Length))
    Dim bm As Bitmap = New Bitmap(mStream, False)
    mStream.Dispose()
    Return bm
End Function

Public Function FileImageToByte(ByVal filePath As String) As Byte()
    Dim fs As FileStream = New FileStream(filePath, FileMode.Open, FileAccess.Read)
    Dim br As BinaryReader = New BinaryReader(fs)
    Dim bm() As Byte = br.ReadBytes(fs.Length)
    br.Close()
    fs.Close()
    Dim photo() As Byte = bm
    Return photo
End Function

Для получения дополнительной информации перейдите по этой ссылке

0 голосов
/ 18 декабря 2013

получение изображения в базе данных MySQL с помощью VB.Это работает ..

Но Как получить изображение в базе данных MySQL с помощью веб-службы?

Try
        Dim adapter As New MySqlDataAdapter
        adapter.SelectCommand = dbcomm

        Dim Data = New DataTable

        adapter = New MySqlDataAdapter("SELECT image,img_filename FROM image_test WHERE img_id='" + txt_image_id.Text + "'", dbconn)

        Dim commandbuild = New MySqlCommandBuilder(adapter)
        adapter.Fill(Data)

        Dim lb() As Byte = Data.Rows(0).Item("image")
        'Dim fl = Data.Rows(0).Item("img_filename")
        Dim lstr As New System.IO.MemoryStream(lb)
        'txt_RetrieveFilename.Text = fl

        PictureBox2.Image = Image.FromStream(lstr)
        PictureBox2.SizeMode = PictureBoxSizeMode.StretchImage
        lstr.Close()
    Catch ex As Exception
        MsgBox(ex.ToString())
    End Try
0 голосов
/ 20 марта 2012

Вы можете использовать поток памяти для обработки байтов из БД и преобразования их в изображение.

Используйте этот код для преобразования байтов в изображение:

Dim bytes() as byte
bytes = (objdr("picture"))

Dim memStream as New MemoryStream(bytes)
PictureBox1.image = Drawing.Image.FromStream(memStream)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...