Chyba při načtení obrázku z DGW do PictureBoxu   otázka

VB.NET, WinForms, Databáze

Prosím o pomoc.

Mám databázi access (accdb, kde je i pole s obrázky formátu .png, jsou načtené jako OLE objekty, v accesu to vidím jako "package". Nevím co to znamená...

Chci zobrazit obrázek z DataGridView z vybraného řádku do PictureBoxu na jiném formuláři.



        'Načtení obrázku
        Dim a
        Dim img As Byte()
        img = DGW1.SelectedRows(0).Cells(27).Value
        Dim ms As New MemoryStream(img)
        a = MsgBox("Velikost obrázku " & ms.Length)             'jen pro kontrolu jak velký je stream
        If ms.Length > 0 Then
            Form3.PictureBox2.Image = Image.FromStream(ms)
        Else
            Form3.PictureBox2.Image = Nothing
        End If

        Form3.ShowDialog()

Na řádku: Form3.PictureBox2.Image = Image.FromStream(ms) mi to hlásí: "Parametr není platný"

Googlil jsem kdeco, ale už nevím, kde hledat chybu.

ms.length je větší než 0, tzn. že nějaká data tam jsou.

Prosím poradí někdo?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

zkus pred to dat ms.Position = 0 ale je to bez zaruky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nemá to na to vliv, stále stejná chyba. Nebude to něco v datových typech nebo tak něco...?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

jedine, ze by VB neumel PNG (coz se mi nezda, ale uz v nem dlouho nedelam), zkus si prevest na JPG ci BMP a dat to do databaze. pokud to nepomuze tak uz nevim

nahlásit spamnahlásit spam 0 odpovědětodpovědět
'Načtení obrázku
Dim a
Dim img As Bitmap()
img = DGW1.SelectedRows(0).Cells(27).Value

a = MsgBox("Velikost obrázku " & img.Width & " X " & img.Height, MsgBoxStyle.Information, "Kontrola")             'jen pro kontrolu jak velký je stream
Try
    Form3.PictureBox2.Image = Image.FromStream(ms)
Catch
    Form3.PictureBox2.Image = Nothing
End Try
 
Form3.ShowDialog()
nahlásit spamnahlásit spam 0 odpovědětodpovědět
'Načtení obrázku
Dim a
Dim img As Bitmap()
img = DGW1.SelectedRows(0).Cells(27).Value

a = MsgBox("Velikost obrázku " & img.Width & " X " & img.Height, MsgBoxStyle.Information, "Kontrola")             'jen pro kontrolu jak velký je stream
Try
    Form3.PictureBox2.Image = Image.FromStream(ms)
Catch
    Form3.PictureBox2.Image = Nothing
End Try
 
Form3.ShowDialog()
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se, oprava. Ještě jednu věc jsem přehlédl.

'Načtení obrázku
Dim img As Bitmap()
img = DGW1.SelectedRows(0).Cells(27).Value

MsgBox("Velikost obrázku " & img.Width & " X " & img.Height, MsgBoxStyle.Information, "Kontrola")             'jen pro kontrolu jak velký je stream
Try
    Form3.PictureBox2.Image = Image.FromStream(ms)
Catch
    Form3.PictureBox2.Image = Nothing
End Try
 
Form3.ShowDialog()
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se, oprava. Ještě jednu věc jsem přehlédl.

'Načtení obrázku
Dim img As Bitmap()
img = DGW1.SelectedRows(0).Cells(27).Value

MsgBox("Velikost obrázku " & img.Width & " X " & img.Height, MsgBoxStyle.Information, "Kontrola")             'jen pro kontrolu jak velký je stream
Try
    Form3.PictureBox2.Image = Image.FromStream(img)
Catch
    Form3.PictureBox2.Image = Nothing
End Try
 
Form3.ShowDialog()
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přímo od firmy Autodesk

https://forums.autodesk.com/t5/net/readi...

Imports System.IO

Imports Autodesk.AutoCAD

Imports Autodesk.AutoCAD.Runtime

Imports Autodesk.AutoCAD.DatabaseServices

 

Public Class Form1

Private Sub SelectFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectFile.Click

Dim myStream As Stream = Nothing

Dim openFileDialog1 As New OpenFileDialog()

openFileDialog1.InitialDirectory = "D:\"

openFileDialog1.Filter = "DWG files (*.dwg)|*.dwg" openFileDialog1.FilterIndex = 1

openFileDialog1.RestoreDirectory = True

If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then

Try

myStream = openFileDialog1.OpenFile()

Finally

End Try

End If

 

If openFileDialog1.FileName.Length = 0 Then Exit Sub

Dim TextLine As String = Nothing

Dim objReader As New System.IO.StreamReader(myStream)

 

'Set path to DWGfile:

Dim myfile As String = Nothing

myfile = openFileDialog1.FileName

myfile = myfile.Replace(".dwg", ".txt")

 

'Delete Txt file if exists

Dim FileToDelete As String

FileToDelete = myfile

If System.IO.File.Exists(FileToDelete) = True Then System.IO.File.Delete(FileToDelete)

 

Dim objWriter As New System.IO.StreamWriter(myfile)

 

'Open the DWG File For Reading

Dim myDB As New DatabaseServices.Database

myDB.ReadDwgFile(openFileDialog1.FileName, FileOpenMode.OpenForReadAndAllShare, True)

Dim myBT As DatabaseServices.BlockTable = myDB.BlockTableId.GetObject(OpenMode.ForRead)

Dim myBTR As DatabaseServices.BlockTableRecord = myBT(BlockTableRecord.ModelSpace).GetObject(OpenMode.ForRead)

 

For Each myObjID As ObjectId In myBTR

Dim myEntity As Entity = myObjID.GetObject(OpenMode.ForRead)

If myEntity.Layer.Length > 2 Then objWriter.Write(myEntity.Layer.Length)

Next

 

objWriter.Close()

myStream.Close()

MessageBox.Show("Writing succesful!", "Layer list", MessageBoxButtons.OK, MessageBoxIcon.Information)

Me.Close()

 

End Sub 

End Class
nahlásit spamnahlásit spam 0 odpovědětodpovědět

How troublesome.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback