Hi,
ich möchte ein Bild über eine TCP Verbindung übertragen, dazu müchte ich das Bild zu einem ByteArry zerlegen dieses in ein String umwandeln, diesen versenden, den empfangenen String wieder zu einem ByteArry zusammenlegen und aus dem ByteArry wieder ein Image machen. Habe dafür 4 Methoden geschrieben, alle funktionieren, bis auf das Umwandeln von ByteArry zu Image. Der Fehler ist "Ungültiger Parameter."
Das ist der Quellcode:
Ich weis aber nicht, woran es liegt und wie man es lösen kann.
Alle 4 Methoden
Spoiler anzeigen
#EDIT#
Korrektur, habe herausgefunden, dass es nicht an dieser Methode liegt, da das Umwandeln von Img zu ByteArry zu Img funktioniert, das Problem liegt entweder in ByteArry to String oder String to ByteArry.
###############################Lösung####################################
Spoiler anzeigen
ich möchte ein Bild über eine TCP Verbindung übertragen, dazu müchte ich das Bild zu einem ByteArry zerlegen dieses in ein String umwandeln, diesen versenden, den empfangenen String wieder zu einem ByteArry zusammenlegen und aus dem ByteArry wieder ein Image machen. Habe dafür 4 Methoden geschrieben, alle funktionieren, bis auf das Umwandeln von ByteArry zu Image. Der Fehler ist "Ungültiger Parameter."
Das ist der Quellcode:
VB.NET-Quellcode
- Public Function BytesToImage(ByVal ImageBytesArry() As Byte) As Image
- Try
- Dim imgNew As Image
- Dim memImage As New System.IO.MemoryStream(ImageBytesArry)
- imgNew = Image.FromStream(memImage) 'An dieser Stelle tritt der Fehler auf.
- Return imgNew
- Catch ex As Exception
- MsgBox(ex.Message, MsgBoxStyle.Critical)
- End Try
- End Function
Ich weis aber nicht, woran es liegt und wie man es lösen kann.
Alle 4 Methoden
VB.NET-Quellcode
- Module Functions
- Public Function BytesToImage(ByVal ImageBytesArry() As Byte) As Image
- Try
- Dim imgNew As Image
- Dim memImage As New System.IO.MemoryStream(ImageBytesArry)
- imgNew = Image.FromStream(memImage)
- Return imgNew
- Catch ex As Exception
- MsgBox(ex.Message, MsgBoxStyle.Critical)
- End Try
- End Function
- Public Function ImageToBytes(ByVal Image As Image) As Byte()
- Dim memImage As New System.IO.MemoryStream
- Dim bytImage() As Byte
- Image.Save(memImage, Image.RawFormat)
- bytImage = memImage.GetBuffer()
- Return bytImage
- End Function
- Public Function StrToByteArray(ByVal str As String) As Byte()
- Dim encoding As New System.Text.ASCIIEncoding()
- Return encoding.GetBytes(str)
- End Function
- Public Function ByteArryToStr(ByVal ByteArry() As Byte) As String
- Dim enc As New System.Text.ASCIIEncoding()
- Return enc.GetString(ByteArry)
- End Function
- End Module
#EDIT#
Korrektur, habe herausgefunden, dass es nicht an dieser Methode liegt, da das Umwandeln von Img zu ByteArry zu Img funktioniert, das Problem liegt entweder in ByteArry to String oder String to ByteArry.
###############################Lösung####################################
VB.NET-Quellcode
- Module Functions
- Public Function BytesToImage(ByVal ImageBytesArry() As Byte) As Image
- Try
- Dim imgNew As Image
- Dim memImage As New System.IO.MemoryStream(ImageBytesArry)
- imgNew = Image.FromStream(memImage)
- Return imgNew
- Catch ex As Exception
- MsgBox(ex.Message, MsgBoxStyle.Critical)
- End Try
- End Function
- Public Function ImageToBytes(ByVal Image As Image) As Byte()
- Try
- Dim memImage As New System.IO.MemoryStream
- Dim bytImage() As Byte
- '(1366x768)
- 'Gif 1,4MB, 355KB
- 'Jpeg 823KB, 98KB
- 'Png 1MB, 1MB
- 'Tiff 980KB, 1,09MB
- Image.Save(memImage, Image.RawFormat.Jpeg) 'Empfohlen
- 'Icon verboten
- 'Emf verboten
- 'Exif verboten
- 'MemoryBmp verboten
- 'Wmf verboten
- bytImage = memImage.GetBuffer()
- Return bytImage
- Catch ex As Exception
- MsgBox(ex.Message, MsgBoxStyle.Critical)
- End Try
- End Function
- Public Function SaveImage(ByVal Image As Image, ByVal Filename As String) As Boolean
- Image.Save(Filename)
- If System.IO.File.Exists(Filename) Then
- Return True
- Else
- Return False
- End If
- End Function
- Public Function StrToByteArray(ByVal Text As String) As Byte()
- Return System.Text.Encoding.Default.GetBytes(Text)
- End Function
- Public Function ByteArryToStr(ByVal ByteArray() As Byte) As String
- Try
- Return System.Text.Encoding.Default.GetString(ByteArray)
- Catch ex As Exception
- End Try
- End Function
- Public Function GetScreenShot() As Image
- Dim Btm As New Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height)
- Dim Grp As Graphics = Graphics.FromImage(Btm)
- Grp.CopyFromScreen(0, 0, 0, 0, Btm.Size)
- Grp.Dispose()
- Return Btm
- End Function
- Public Function StringToByteArray(ByRef str As String) As Byte()
- Try
- Return Convert.FromBase64String(str)
- Catch ex As Exception
- End Try
- End Function
- Public Function ByteArrayToString(ByRef Barr() As Byte) As String
- Try
- Return Convert.ToBase64String(Barr)
- Catch ex As Exception
- End Try
- End Function
- Public Function TextStringToByteArray(ByRef str As String) As Byte()
- Dim enc As System.Text.Encoding = System.Text.Encoding.Default
- Return enc.GetBytes(str)
- End Function
- Public Function ByteArrayToTextString(ByRef Barr() As Byte) As String
- Dim enc As System.Text.Encoding = System.Text.Encoding.Default
- Return enc.GetString(Barr)
- End Function
- End Module
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ViktorS“ ()