Handle auslesen

  • HI
    ich habe einen Handle zu einem Bitmap objekt von der _ScreenCapture_Capture() Funktion und wollte frage ob das möglich ist die informationen von HBITMAP gleich auszulesen ohne dies erst in eine datei zu speichern und dann mit FileRead wieder auszulesen?

    Beispiel:

    [autoit]


    #include <ScreenCapture.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $r = TimerInit()
    $hBitmap = _ScreenCapture_Capture()
    MsgBox(0,0,TimerDiff($r)) ;80ms

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $r = TimerInit()
    _ScreenCapture_Capture("1.jpg")
    MsgBox(0,0,TimerDiff($r)) ;200ms

    [/autoit]

    Kurz und knapp:Kann man Bilder aus dem RAM lesen (also binär zum weiterverschickem)?

    • Offizieller Beitrag

    Die Frage ist, was willst du mit den Daten machen oder besser wie willst du sie weiterverarbeiten. Den Handla des Bitmaps hast du ja schon, mit diesem kannst du weiterarbeiten.

  • ja erstmal auf 1024x768 resizen (auch auf 16Bit runterkomprimieren) und dann will ich dieses bild ohne es zu speichern direkt auslesen um es dann via tcp weiterzuschicken (Siehe DeskStream)

    //Edit: das unnütze speichern braucht etwa 120 ms aber der eigentliche desksnap nur 70 das würde DeskStream wesentlich flüssiger laufen lassen

  • In dem Speichervorgang ist auch die Konvertierung zu JPG mit drin. Wenn du die weglassen würdest, würde die Übertragung viel länger dauern, da dann die unkomprimierten Bilddaten übertragen werden!

  • es wird zwar komprimiert, wenn gespeichert wird aber ich denke es ist immernoch schneller, die unkomprimierten daten SO direkt aus dem Speicher zu verschicken, als sie zu Komprimieren beim speichern, dann auszulesen (Dauert am längsten!) und dann erst zu verschicken...

    Ich hab hier nen script bekommen, welches über ExchangeVariables.au3 das Bild aus dem Speicher liest und es an Programm 2 verschickt...

    Man könnte es für TCP umschreiben..:!!

    Wär ein versuch wert!


    ps: habs schonmal probiert und hab mich irgendwie zu doof angestellt, wär also auch in meinem Interesse, wenn es hier jemand posten würde...!

    LINK:

    https://autoit.de/index.php?page…7544#post187544

  • ok, hab mir das ganze mal mit

    _WinAPI_CreateStreamOnHGlobal und _GDIPlus_ImageSaveToStream (beide in der GDIp.au3)

    angeguckt..!!

    ---> Wie geht das mit den Funktionen, kannst du nen BeispielCode schreiben...??

    Also

    $var = Screenshot()
    ;Lese Code des Bildes aus $var und verschicke...

    ;PROGRAMM 2:
    Empfange Code, und zeige in GUI an/ ventuell Speicher bild


    ..Dank dir:)