Hey,
Also ich habe mir eine Screenshotfunktion geschrieben mit der ich einen Schnapschuss machen kann, sowie die Compression (Qualität) einstellen kann und einen
Stempel (DrawString) draufklatschen kann.
Ebenfalls habe ich eine Funktion um ein Bild in einen Hexadecimal String umzuwandeln.
Beide Funktionen funktionieren getrennt fehlerfrei.
D.h. Wenn ich ein Bild in einer PictureBox habe, und dann die ImageToHex Funktion nutze gibt er mit den HexString zurück. So Solls sein.
Wenn ich den Screenshot direct in ne PictureBox klatsche zeigt er ihm mir auch Problemlos an.
Wenn ich ihn allerdings direkt konvertiere, dann bekomm ich einen seltsamen Fehler.
Ich habe es so versucht:
Woran liegt das?
Da Imageformat ist egal, hab schon alles probiert (JPEG, PNG, BITMAP etc)
Das muss doch möglich sein den Screenshot direkt im Speicher in nen HexString zu konvertieren ohne das ich ihn vorher in eine PictureBox laden muss??
Also ich habe mir eine Screenshotfunktion geschrieben mit der ich einen Schnapschuss machen kann, sowie die Compression (Qualität) einstellen kann und einen
Stempel (DrawString) draufklatschen kann.
Ebenfalls habe ich eine Funktion um ein Bild in einen Hexadecimal String umzuwandeln.
VB.NET-Quellcode
- Private Function Screenshot(Optional ByVal Quality As Integer = 50, Optional ByVal StampString As String = Nothing) As Image
- Dim Rect As Rectangle = Screen.PrimaryScreen.Bounds
- Dim ImageCodec() As System.Drawing.Imaging.ImageCodecInfo = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
- Dim EncodeParameters As New System.Drawing.Imaging.EncoderParameters(1)
- EncodeParameters.Param(0) = New System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Quality)
- Using MySnapshot As Bitmap = New Bitmap(Rect.Width, Rect.Height), Graphics As Graphics = Graphics.FromImage(MySnapshot)
- Graphics.CopyFromScreen(0, 0, 0, 0, MySnapshot.Size)
- Dim Stamp As New Font(System.Drawing.FontFamily.GenericSansSerif, 14, FontStyle.Bold, GraphicsUnit.Point)
- Graphics.DrawString(StampString, Stamp, Brushes.Red, 6, 6)
- Using Ms As New IO.MemoryStream
- MySnapshot.Save(Ms, ImageCodec(1), EncodeParameters)
- Return Image.FromStream(Ms)
- End Using
- End Using
- End Function
- Private Function ImageToHex(ByVal Img As Image) As String
- Using Ms As New IO.MemoryStream
- Img.Save(Ms, Imaging.ImageFormat.Jpeg)
- Return BitConverter.ToString(Ms.ToArray, 0).Replace("-", "")
- End Using
- End Function
Beide Funktionen funktionieren getrennt fehlerfrei.
D.h. Wenn ich ein Bild in einer PictureBox habe, und dann die ImageToHex Funktion nutze gibt er mit den HexString zurück. So Solls sein.
Wenn ich den Screenshot direct in ne PictureBox klatsche zeigt er ihm mir auch Problemlos an.
Wenn ich ihn allerdings direkt konvertiere, dann bekomm ich einen seltsamen Fehler.
Ich habe es so versucht:
Woran liegt das?
Da Imageformat ist egal, hab schon alles probiert (JPEG, PNG, BITMAP etc)
Das muss doch möglich sein den Screenshot direkt im Speicher in nen HexString zu konvertieren ohne das ich ihn vorher in eine PictureBox laden muss??
C# Developer
Learning C++
Learning C++
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rikudo“ ()